# 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.

- Workflow type: code
- Services: Google Forms, Microsoft Dynamics 365, Slack
- Categories: Sales
- Published: 2026-08-07

## What it does

- 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 you'll need

- 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.

## Prompt

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.

## How to customize

- 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.

## 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

## FAQ

### 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.

Use this prompt in General Input: https://www.generalinput.com/prompts/file-contact-sales-form-leads-into-dynamics-365-without-duplicates