Turn signed DocuSeal forms into HubSpot contacts and notes

When a DocuSeal document is fully signed, the answers people typed become real HubSpot records, with the executed PDF filed in Drive.

Agentic Task
DocuSealHubSpotGoogle DriveSlackSalesOperationsDocument ProcessingData Sync
PromptCreate

When a DocuSeal submission is fully signed, I want the answers people typed into the form turned into real CRM records, not just a filed PDF. Trigger this workflow on the DocuSeal submission_completed poll event, which fires once every submitter has signed.

Start by calling DocuSeal Get Submitter for the completed submission to read the submitted field values along with the signer's name and email. DocuSeal fields are defined by text tags of the form {{Company Name;role=Signer1;type=text}}, so the answers come back as structured label and value pairs rather than free text. That structure is the whole point of this workflow, so lean on it.

Before writing anything to HubSpot, run an explicit mapping step from DocuSeal field labels to HubSpot properties. Keep this mapping in one clearly marked place near the top of the workflow so it is easy for me to edit later. Start with a sensible default set: Full Name to firstname and lastname, Email to email, Phone to phone, Job Title to jobtitle, Company Name to the company name property, Website or Domain to the company domain, and any address fields to the matching HubSpot address properties. Match labels case insensitively and tolerate small wording differences. If a DocuSeal label has no mapping, do not guess at a property name: collect it and include it in the note instead, so nothing the signer typed is silently thrown away.

Decide which mapped fields are required before writing anything. If the signer left a required field blank, or the value is only whitespace or an obvious placeholder such as N/A, do not write an empty value into the CRM. Skip that property entirely and collect the blank required fields into a list that you call out in both the note and the Slack message, so a human can chase the missing detail. Writing empty values into HubSpot is worse than leaving the property untouched.

Check HubSpot before creating anything. Use Search Contacts filtered on the signer's email address. If a contact already exists, reuse it and do not overwrite properties that already have content. Only when there is no match, use Create Contact with the mapped properties. Update the story accordingly in everything you write afterwards, so the note and the Slack message say whether this person was newly created or matched to an existing record.

Do the same for the organisation. Work out the counterparty name from the mapped company field, falling back to the domain of the signer's email address if the form did not ask for one, then use Search Companies to look for an existing match by name or domain. Only when there is genuinely no match, use Create Company, and associate the contact with it either way. Do not create a duplicate company just because the name is spelled slightly differently or has a different legal suffix.

Then use Create Note, associated with both the contact and the company, summarizing what the signer actually filled in. Write it so a salesperson can read it in ten seconds: the document name, the date it was signed, the mapped answers as label and value pairs, any extra answers that had no mapping, and an explicit line listing any required fields left blank.

Pull the executed PDF with Get Submission Documents, which returns the final signed files once the submission is complete. Upload it to Google Drive in a folder named after the counterparty. Look for that folder first with List Files using a Drive query on the folder name, and only use Create Folder when it does not already exist, so repeat business from the same counterparty collects in one place instead of scattering. Then upload with Upload File (Multipart), keeping the DocuSeal document name and the signing date in the file name. Multipart upload covers files up to 5MB, so use the resumable upload for anything larger.

Finish with Slack Send a Message to the channel my team watches. Keep it short: who signed, which document, whether the contact and company were newly created or matched to existing records, a link to the file in Google Drive, and a link to the HubSpot contact. If any required fields were left blank, put that on its own line so it is impossible to miss.

A few guardrails. If the submission has several signers, capture the one whose email belongs to the counterparty rather than an internal countersigner. If DocuSeal returns no field values at all, still file the PDF and post the Slack message, but say plainly that there was nothing to capture rather than creating an empty contact. If any single step fails, report which step failed in Slack rather than failing silently, since a half written CRM record is harder to spot than an obvious error.

What does this prompt do?

  • Runs by itself the moment a DocuSeal document has been signed by everyone.
  • Turns the answers people typed into the form into a real HubSpot contact and company, creating them only when they are genuinely new.
  • Adds a note to the CRM summarizing what the signer filled in, and flags any required question they skipped instead of saving a blank value.
  • Files the executed PDF in a Google Drive folder named after the counterparty and posts a Slack confirmation with a link to it.

What do I need to use this?

  • A DocuSeal account with the documents you send out set up as fillable forms
  • A HubSpot login that can create contacts, companies, and notes
  • A Google Drive account and a place where you keep signed agreements
  • A Slack workspace and a channel for the confirmations
  • Forms that actually ask for the details you want in the CRM, such as name, email, company, and phone

How can I customize it?

  • Change which form questions map to which CRM fields, including any custom HubSpot properties you have added
  • Decide which questions count as required, so the workflow knows what to flag when someone skips one
  • Pick the Slack channel, the Drive folder your counterparty folders live in, and how the saved file is named

FAQs

Will this create duplicate contacts if the same person signs twice?
No. It looks the person up by email address in HubSpot before writing anything, and reuses the existing record when it finds one. A repeat signer gets a new note and a newly filed document rather than a second contact.
What happens if someone leaves a question blank?
The workflow will not write an empty value into your CRM. It skips that field, then calls it out in the CRM note and in the Slack message so someone can chase the missing detail.
Will this work on HubSpot Free?
Yes. Contacts, companies, and notes are all available on the free tier, so you do not need a paid Sales Hub seat for this to run.
Do I have to use a DocuSeal template?
It works with any DocuSeal document that has fillable fields. Whatever fields you put on the document are what gets captured, so the more your form asks, the richer the CRM record becomes.
What if my document has more than one signer?
It captures the counterparty's answers rather than your own countersignature, and you can tell it which signer to treat as the customer.

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
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
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
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Provision customer entitlements in DynamoDB when a deal is won

When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.

HubSpot
Amazon DynamoDB
Slack Bot
Agentic Task

Stop retyping signed forms into your CRM.

Every signed DocuSeal document becomes a complete HubSpot record, a filed PDF, and a Slack heads-up, without anyone copying and pasting.