How Weflow Creates Salesforce Contacts and Opportunity Contact Roles From Email and Calendar

Learn when Weflow creates Salesforce contacts and opportunity contact roles from email and calendar

Table of Contents
See how Weflow captures the right contacts and contact roles in Salesforce without creating duplicate or junk records.
Book a demo
Or use our free web app.
See how Weflow creates Salesforce contacts and opportunity contact roles from email and calendar activity.
See it live

Weflow Activity & Contact Capture creates Salesforce contacts, and only contacts, for new people your reps email or meet. It never creates leads, accounts or opportunities.

Here's what has to be true before a contact appears:

  • A rep sends to that person in To or CC.
  • Weflow has checked the address against your contacts, leads and custom objects.
  • Creation falls within the caps and account restrictions you set.

Weflow writes eight fields and never forces a contact past a required field. It can also add an opportunity contact role, with a fixed value, as reps log email to a deal. There's no admin review queue, and we'll show you where that matters.

If you own the org, you know the trade you're usually offered. Leave creation off, and the deal shows one contact while six people sit on the thread, right up until the champion leaves. Turn it on with loose rules, and you spend a quarter deleting vendors, recruiters and webinar attendees.

Weflow is the Revenue AI Orchestration platform for sales, customer success, and RevOps teams. It's built for Salesforce teams, and everything it creates lands in your own Salesforce objects. This page covers one part of Salesforce data capture with Weflow Activity & Contact Capture: the exact rules behind contact and contact role creation, written so you can test each one in a sandbox before you switch it on.

What Weflow creates in Salesforce, and what it never creates

Weflow Activity & Contact Capture creates Salesforce contacts under a small set of named rules, and it never creates leads, accounts or opportunities. Here's the full rule set in one place.

Rule areaWhat Weflow doesWhat it does not do
Records createdCreates contacts only. If an address already exists as a lead, the activity attaches to that lead.Never creates leads, accounts or opportunities. Never converts leads.
TriggerCreates contacts when a rep sends an email. Detects attendees on calendar invites and caps them per event.Doesn't create contacts from mail the rep only receives, or from threads the rep never answers.
RecipientsCovers addresses in To and CC.Ignores BCC.
Duplicate lookupLooks up the address in real time across contacts, leads and custom objects with an email field, including secondary email fields. Salesforce's own duplicate rules still apply.Doesn't merge duplicates already in your org.
Volume guardsLets you restrict creation to existing accounts, cap contacts per meeting or thread, block standard prefixes, exclude domains, and let reps untick creation per email.Has no admin queue for approving contacts before they're created.
Fields writtenWrites first name, last name, email, account, website, LinkedIn URL, title and phone.Writes nothing else on the contact.
Required fieldsSatisfies them with a Salesforce default, enrichment, or a flow you add.Never forces a contact through. If a required field can't be filled, that contact isn't created.
Contact role creationWhen an email is logged to an opportunity and the contact has no role there, an option creates the role at that moment.Doesn't move activity that was logged before the role existed.
Role valueSets a fixed value per configuration.Never infers champion, economic buyer or any other role from a title.

What triggers Weflow to create a new Salesforce contact

Weflow creates a contact when a rep sends, not when they receive. Two settings sit underneath that: "create new contact on first log" has to be on, and the person's domain can't be on your exclusion list.

SituationWhat Weflow does
A rep emails a new person in ToCreates the contact
A rep's email has a new person in CCCreates the contact
A new person sits in BCCCreates nothing
Someone emails the rep, and the rep never repliesCreates nothing
The "create new contact on first log" setting is offCreates nothing
The person's domain is excludedCreates nothing
Everyone on the thread is on your internal domainLogs and creates nothing

We tie creation to the send because a reply is the one signal you get for free that a rep is actually working with someone.

A buyer who loops their CFO and legal lead into a thread is adding people to the deal. A cold inbound pitch or a recruiter the rep ignores isn't. So the unanswered email creates nothing, and nobody has to write a rule for it.

Calendar invites follow the same caps. Weflow detects attendees on invites and limits how many contacts a single event can create.

How Weflow checks whether a person already exists in Salesforce

Before it creates a contact, Weflow looks up the email address in real time across your org. Here's what the lookup covers:

  • Weflow checks contacts by their primary email address.
  • Weflow checks secondary email fields too, so someone already in Salesforce under a second address doesn't get a second record.
  • Weflow checks leads. If the address matches a lead, the activity attaches to that lead, no contact is created, and lead conversion stays a manual Salesforce step.
  • Weflow checks any custom object with an email field.
  • Your Salesforce duplicate rules still run on top of Weflow's lookup.

The secondary email check is the one that catches the case most tools miss: the person who uses two addresses. Lendz's RevOps lead put it this way:

"We try really hard to maintain data quality in our data structure, and we don't want to create duplicate contacts just because someone has two sets of emails that they use. Weflow covers this, which was a big saver for us."

Erick Mahle, Vice President of Revenue Operations & Digital Transformation, Lendz Financial

Weflow doesn't merge duplicates that already exist. Deduplicating the org is a separate job, and it's yours, but the pre-go-live section below shows you where to find them.

How Weflow keeps webinar attendees and no-reply senders out

You control volume with a short set of admin settings, plus one control your reps hold at the moment they send. Here's each one, what it stops, and how we'd set it on day one.

ControlWhat it stopsRecommended at go-liveTrade-off
Existing accounts onlyContacts from companies that aren't in Salesforce: vendors, recruiters, one-off inboundOnA new stakeholder at a company with no account yet creates no contact, and nobody gets told
Cap per meeting or threadA 100-person webinar turning into 99 contactsOn, set just above your largest real buying meetingAttendees beyond the cap aren't created
Prefix blocksInvoice, billing, no-reply and support addresses becoming peopleOnCovers standard prefixes, so other shared mailboxes need an address exclusion
Domain exclusionsDomains that match an account but shouldn't create contacts, such as free-mail and supplier domainsAdd free-mail domains and the suppliers you buy fromNeeds updating when your supplier list changes
Per-email untickCreation on one email a rep knows shouldn't create, cleared in the Outlook add-in or Chrome extension before sendingAvailable to repsOnly works when the rep notices
Full switch-offAll automatic creation for a teamOff only for the teams described further downThat team loses multi-threading visibility
Weflow Activity Capture setup modal on the Exclude Addresses step with internal and external domain exclusion fields.

The question we hear first is whether you'll have to maintain a domain list for every possible sender. You won't.

Weflow logs nothing for a sender who matches no contact, lead or account domain in Salesforce. With existing-accounts-only on, it creates nothing for them either. So your exclusion list only needs the domains that do match an account and still shouldn't create contacts. That's a short list, not an endless one.

Which eight fields Weflow writes on a new Salesforce contact

Weflow writes eight fields on a new contact and nothing else: first name, last name, email, account, website, LinkedIn URL, title and phone. Name and email come from the thread. Title, phone and LinkedIn come from enrichment where it finds them.

Where the name and email address come from

Weflow takes the name from the display name the email or calendar invite carried. Most mail clients send one alongside the address. Some don't, and people copied into a thread often arrive as an address alone.

When there's no display name, Weflow leaves first name blank and puts the address in last name. Here's how the same person lands both ways:

FieldArrived as "Jane Smith <[email protected]>"Arrived as "[email protected]"
First nameJaneBlank
Last nameSmith[email protected]
Email[email protected][email protected]
AccountMatched by domainMatched by domain

It looks like a bug in a contact list, and it isn't one. Capture reproduces what arrived. No tool can recover a name that was never sent, and we'd rather tell you that than invent one.

What enrichment fills in before the contact is saved

Weflow enriches the contact before it writes it to Salesforce, filling title, phone and LinkedIn where it finds them. You set the field mapping, so the values land in your own fields rather than in a vendor object.

That answers most of the thin-contact problem. A name and an address prove someone exists. A title tells you whether the deal is multi-threaded at the right level.

Set your expectations honestly, though. Waterfall enrichment services typically match around 70 to 80 percent of contacts, depending on industry and where people are based. So a share of new contacts will arrive with name and email only. Any workflow keyed on job title needs a fallback for them.

Weflow fills in the identity of a person it found on a thread. It doesn't enrich firmographics the way a data provider does.

How Weflow handles required Contact fields and validation rules

Weflow works within your required fields and validation rules rather than around them. A required Contact field gets filled by a Salesforce default value, by enrichment, or by a flow you add. If none of those fills it, Weflow doesn't create that contact.

Required field situationHow it gets satisfiedWhat happens if it can't
Required picklist, such as lead sourceA default value in Salesforce, or a flow that sets it on contacts the integration user createsCreation is blocked for every contact
Required title or phoneEnrichment, when it finds the value for that personCreation is blocked for that person only
Required field with a Salesforce defaultWeflow writes the defaultNot applicable
Required custom field with no default that enrichment can't fillA flow on integration-user-created contactsCreation is blocked for every contact
Validation rule requiring a field Weflow didn't fillRelax the rule for the integration user, or fill the field by default or flowThe contact doesn't save

A required Title field is the most common cause we see of contact creation failing after an otherwise smooth install. It's an org setting, and you can find it before go-live.

If your contacts feed a billing or subscription system and those rules can't change, expect some creations not to save. You can relax the rule for the integration user only, or create those contacts by hand from the extension.

How to prepare your Salesforce org before switching creation on

Most failures that get blamed on a capture tool already live in the org's configuration, and you can find almost all of them before a single rep is enrolled.

Check required fields, Website values and duplicates first

  1. Grant the Weflow integration user create on Contact, and scope its field-level edit access to the eight fields Weflow writes.
  2. List the object-level required fields on Contact. For each one, set a default value or add a flow that fills it on contacts created by the integration user.
  3. Review the validation rules that would fire on contacts the integration user creates. Decide which ones can exclude the integration user and which can't.
  4. Audit the Website field on your accounts. Weflow matches on it, so a personal mail domain or a shared domain there sends every email from that domain to one account.
  5. Find duplicate accounts sharing a domain, and duplicate contacts. Activity Capture Health in Weflow Analytics flags both, plus unconverted leads that already match a contact.
  6. Check whether Shared Activities is on, so meetings relate to every attendee and not just the primary contact. In a large org, that's a change request rather than a toggle, so raise it early.
Weflow Analytics Activity Capture Health tab listing data quality issues and Salesforce settings checks including Einstein Activity Capture

Test contact creation in a sandbox with external addresses

Weflow reads no mailbox until a user is enrolled in a capture configuration, so you can finish setup and test with one person first.

  1. Enroll one user and send from them to an address outside your company domain. Internal-only mail is excluded, so a test between colleagues logs nothing and looks broken.
  2. Give each test account its own unique domain. Never use a free-mail domain like gmail.com, because every test sender then matches several accounts at once.
  3. Give each test opportunity one clear contact role.
  4. Have the test contact reply on a thread, then reply as the rep, adding a new person in CC to trigger creation.
  5. Open the created contact. You'll see which of the eight fields saved, and whether a required field blocked it.

How Weflow adds opportunity contact roles as reps email buyers

When Weflow logs an email to an opportunity and the contact on it has no role there, an option creates the opportunity contact role at that moment. Reps don't add anyone by hand, so contact roles fill in as a by-product of normal correspondence.

Why a contact role decides which deal an email lands on

Salesforce lets an activity relate to one opportunity or to the account. Contact roles are how a capture tool tells which opportunity it is. In most orgs they're empty, because nothing forces reps to fill them.

Here's the chain, and why it gets better the longer it runs:

  1. A contact has no role, and the account has several open deals. Their email falls back to the account, and the deal looks dead.
  2. The email gets logged to the right opportunity, either because only one deal fits or because the rep picks it in the Outlook add-in or Chrome extension.
  3. Weflow creates the contact role on that opportunity.
  4. Every later email and meeting from that contact resolves to the opportunity through the role.
Weflow Outlook add-in with a Salesforce record selected for logging

Weflow doesn't move activity on its own. Anything logged before the role existed stays where it landed, unless a rep or admin moves it from the add-in or extension.

This is what your sales leader actually gets. Once roles fill in, multi-threading stops being something reps claim and becomes something you can report on, deal by deal, before a champion leaves.

Why Weflow sets a fixed role instead of guessing champions

Weflow sets the contact role to a fixed value per configuration and never infers it from a job title. That's a deliberate choice.

A VP of RevOps on a thread might be your champion or your loudest detractor, and a title can't tell you which. The activity proves one thing: this person is active on the deal. That's what Weflow records. Champion and economic buyer stay a judgement for the rep or your playbook.

We'd rather leave a field to a person than fill it with a confident guess that ends up in a deal review. As our co-founder puts it:

"It's worse to have incomplete, inconsistent, or inaccurate data than to have no data at all, because then you have this illusion that you can trust the data."

Philipp Stelzer, CPO & Co-founder, Weflow

Listen to #75 Salesforce Data Hygiene: How to Get It Right - with Janis & Philipp on the RevOps Lab podcast.

So contact role coverage improves automatically. Contact role quality is still a human call.

When to keep Weflow contact creation switched off

Automatic contact creation is worth having on for most revenue teams, but not all. Because capture configurations are scoped per team, you can switch it off for one group and leave it on for everyone else.

SituationWhat happens with WeflowWhat to do instead
You need a human to approve contacts, as public sector teams often do, or most meeting attendees aren't buyers but share the customer's accountThere's no review queue. Existing-accounts-only won't filter these people out, because they all sit under the same account.Keep creation off for that team, and let reps create contacts by hand from the Outlook add-in or Chrome extension
Contact rules can't relax because contacts sync into billing or subscription systemsContacts that enrichment can't complete won't saveRelax the rule for the integration user only, or create those contacts by hand, where the full field set is available
Existing-accounts-only is on, and a new stakeholder appears at a company not yet in SalesforceNo contact is created, and nobody is toldThe rep creates the contact from the extension. Once someone creates the account, Weflow logs the earlier emails to it automatically.
Your inbound motion runs on leadsWeflow never creates leads, and attaches activity to leads that already existKeep your existing lead creation tooling

If you'd like to walk your own Contact required fields, validation rules and billing-sync constraints past someone who knows these rules inside out, bring that list to a call. See how Weflow captures activity, updates Salesforce fields from calls, and rolls up your forecast. Book a 30-minute demo.

FAQ: Weflow contact and contact role creation

Does Weflow charge extra for contact creation or enrichment?

No. Contact creation and enrichment are part of Weflow Activity & Contact Capture at $19 per user per month, with enrichment at no extra charge. It's also included in the Revenue AI Foundation, Business and Enterprise bundles. All plans are billed annually, with a 10-user minimum.

What permissions does the Weflow integration user need?

The integration user needs create permission on Contact and field-level edit on the fields Weflow writes. You can scope that edit access to the eight fields rather than granting edit on every Contact field.

Can Weflow limit contact creation to contacts on open opportunities?

No. The account-level restriction Weflow offers is existing accounts only. You combine it with the per-event cap, prefix blocks and domain exclusions to control volume.

How do I see which contacts Weflow created or skipped?

Weflow creates contacts as the integration user, so a standard Salesforce contact report filtered on Created By shows everything it created. Activity Capture Health flags duplicate contacts, duplicate accounts and accounts sharing a website domain. Skipped contacts aren't reported anywhere.

Can I roll out contact creation by team or region?

Yes. Capture configurations are scoped per team, per user, or by a Salesforce field value such as billing region. Contact creation and the per-event cap are set in each configuration, so you can phase creation in one team at a time.

Will Outreach, Salesloft or Einstein Activity Capture create duplicate contacts alongside Weflow?

Salesloft's Auto-Person Capture creates person records inside Salesloft, not Salesforce contacts. Einstein Activity Capture's Contact Auto-Creation isn't available under Sync Email as Salesforce Activity, the default since Summer '25. Whatever another tool has already created in Salesforce, Weflow's lookup checks existing contacts and leads before it creates anything. For duplicate activities rather than contacts, compatibility mode lets an engagement tool like Outreach log first.

How does Weflow handle partner, agency and consultant contacts?

A partner or consultant on a customer thread is created against the customer's account, with the same fixed role as everyone else. You correct it downstream: a Salesforce flow that reassigns what Weflow wrote, an agent that updates the record afterwards, or the rep creating the contact by hand in the extension.

Can reps control contact creation from their phone?

Mail a rep sends from their phone is captured like any other, because capture runs on the mail server. There's no mapping or creation override on mobile, since those controls live in the Outlook add-in and Chrome extension. A thread the rep already mapped on desktop keeps that mapping.

How does Weflow protect personal data when it creates contacts from email?

Weflow is SOC 2 Type II certified and GDPR compliant. It runs Zero Data Retention for AI processing and never uses customer data to train AI models. When it creates a contact, it writes only the eight named fields, into your own Salesforce.

By
Weflow

Weflow is a modular Revenue AI platform for RevOps leaders and revenue teams, powering pipeline, forecasting, and deal inspection for 200+ B2B companies. The team behind Weflow also hosts the RevOps Lab podcast and runs RevOps Chat, the Slack community for 1,000+ RevOps practitioners.

More articles by
Weflow

Related articles

Weflow Outlook Add-In and Chrome Extension: What Reps Use Them For When Capture Is Automatic

Learn when reps use Weflow's Outlook add-in and Chrome extension when capture is automatic

Weflow Integration User in Salesforce: Which Permissions It Needs and Why

Learn which Salesforce permissions a Weflow integration user needs and why it doesn't need Modify All Data.

How Weflow Decides Which Salesforce Opportunity an Email or Meeting Belongs To

Learn how Weflow maps emails and meetings to the right Salesforce opportunity—and when it logs to the account.

How Weflow Creates Salesforce Contacts and Opportunity Contact Roles From Email and Calendar

Learn when Weflow creates Salesforce contacts and opportunity contact roles from email and calendar

Rolling Out Weflow Activity Capture Without Asking Reps to Install Anything

Learn how Weflow Activity Capture works without rep installs, plus server-side vs add-ins.

How to Keep Health Data and Other Sensitive Information Out of Activity Capture

Learn how to keep health data and other sensitive info out of activity capture in Salesforce and Outlook.

Results After Automating Activity Capture: Numbers From Weflow Customers

Learn what automating activity capture changed for Weflow customers: coverage, forecast, time to value.

How to Move From Backstory (People.ai) to Weflow: History Backfill, Contact Creation and Cutover

Learn how to move from Backstory (People.ai) to Weflow: history backfill, contact creation, cutover.

How Weflow Backfills Historical Emails and Meetings Into Salesforce: What Comes Across, How Long It Takes, and What It Costs

Learn what Weflow backfills into Salesforce, what won't sync, how long it takes, and what it costs.

How to Set Up Bi-Directional Sync Between a Meeting Tool and Salesforce

Learn how to set up bi-directional sync between a meeting tool and Salesforce without loops.

How to Enforce Contact Role Requirements on Salesforce Opportunities

Learn how to enforce contact role requirements on Salesforce opportunities with flows and validation rules.

How Activity Capture Tools Handle Salesforce Validation Rules, Field Dependencies and Permission Sets

Learn how activity capture tools handle Salesforce validation rules, field dependencies, and permissions.