File contact sales form leads into Dynamics 365 without duplicates

Every contact sales form submission lands in Dynamics 365 as a clean lead, updating the record you already have instead of creating a second one.

Deterministic Code
Google FormsMicrosoft Dynamics 365SlackSalesLead EnrichmentData Sync
PromptCreate

Whenever someone submits our inbound contact sales form, I want this workflow to file the lead into Microsoft Dynamics 365 without ever creating a duplicate record. Trigger it by polling Google Forms for a new response on our contact sales form.

Start with the Google Forms Get Response operation to pull the full submission, and map the answers to first name, last name, email address, company name, phone number and the free text message the person wrote.

Before writing anything, check whether we already know this person. Run Dynamics 365 Query Records against the lead table with an OData filter matching the submitted email address, then run it again against the contact table with the same email filter. Run a third Query Records against the account table, filtering on the domain portion of the submitted email address, so we can tell whether the company is already a customer even when the individual is new to us.

If none of those lookups return a match, use Dynamics 365 Create Lead with the first name, last name, email, company and phone, and map the form's message into the description field.

If a lead or a contact already exists for that email address, do not create a second record. Use Dynamics 365 Update Record on the existing record instead. Refresh only the fields whose values actually changed, and append the new enquiry to the description field along with the submission date rather than overwriting what is already there.

When the account lookup matches an existing company, use Dynamics 365 Associate Records to link the new or updated lead to that account, so it routes to the territory owner who already manages that relationship.

Finish with the Slack Send a Message operation to post into our sales channel. The message should show the person's name and company, state clearly whether this was a brand new lead or an update to an existing record, note which account it was linked to when one matched, and list the answers they submitted.

Example output

Inbound contact sales enquiry Name: Priya Raman Company: Northwind Logistics Status: Existing contact updated (no duplicate created) Linked account: Northwind Logistics Email: priya.raman@northwindlogistics.com Phone: +44 20 7946 0912 What they submitted: How can we help? We are evaluating options for a 200 seat rollout in Q4 and would like to talk to someone about pricing. Team size: 200 to 500 Timeline: This quarter

What does this prompt do?

  • Picks up every new submission to your contact sales form within minutes of someone pressing submit.
  • Checks Dynamics 365 for an existing lead or contact with that email address before anything is written, so the same person is never filed twice.
  • Creates a new lead when they are genuinely new, or refreshes the record you already have and adds their latest enquiry to the notes. If their company is already an account, the lead is linked to it so it lands in the right territory.
  • Posts a message to your sales channel in Slack with the person's name, their company, whether they are new or already known, and the answers they submitted.

What do I need to use this?

  • A Google account with access to the contact sales form you want to watch.
  • A Microsoft Dynamics 365 account with permission to read and write leads, contacts and accounts.
  • A Slack workspace and the channel where your sales team wants these alerts to land.

How can I customize it?

  • Swap the form tool. The same workflow works with Fillout, Gravity Forms, Cognito Forms, WPForms or Squarespace Forms if you do not use Google Forms.
  • Change which Slack channel gets the alert, or send it as a direct message to whoever owns inbound leads that week.
  • Adjust which form answers map to which Dynamics 365 fields, and choose whether a repeat enquiry is appended to the existing notes or recorded separately.
  • Turn off the company matching step if you would rather assign territory by hand.

FAQs

Will this create a duplicate if someone fills in the form twice?
No. Every submission is checked against your existing leads and contacts by email address before anything is written. If the person is already in Dynamics 365, their existing record is updated and the new enquiry is added to their notes instead of a second record being created.
What happens if the person is new but their company is already a customer?
The workflow matches the company using the domain from their email address. When it finds an existing account, the new lead is linked to it, so it shows up under the right company and reaches the territory owner who already manages that relationship.
Do I have to use Google Forms?
No. Google Forms is the default, but the same workflow works with other form tools such as Fillout, Gravity Forms, Cognito Forms, WPForms or Squarespace Forms. The form is only the starting point, and everything after it stays the same.
How quickly does a lead show up in Dynamics 365?
The form is checked for new responses continuously, so a submission normally reaches Dynamics 365 within a few minutes of someone pressing submit. There is nothing for your team to import or retype.
Can I control what the sales team sees in Slack?
Yes. The message is fully editable. By default it shows the person's name, their company, whether this was a brand new lead or an existing record, and the answers they submitted, but you can add or remove any of that.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Turn each week's football fixtures into a venue staffing plan

Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.

API-Sports
Google Calendar
Slack
Agentic Task
Turn 5 star Yotpo reviews into a weekly marketing content queue

Every Tuesday we pull your best new reviews, draft social captions, email testimonials and product page quotes, then stage them in Notion for approval.

Yotpo
Notion
Slack
Agentic Task
Catch bad shipping addresses before you buy the label

Every weekday morning, unfulfilled orders get an address check: harmless typos fixed automatically, risky addresses held with a note to the customer.

Shippo
Shopify
Gmail
+1
Agentic Task

Stop letting duplicate leads pile up in your CRM.

Capture every contact sales enquiry in Dynamics 365 as one clean record, linked to the right account, and tell your team the moment it lands.