App integration · All integrations
Connect HubSpot to Formfy
Sales and ops teams using HubSpot spend real hours copying client details out of PDF inbox attachments, manually creating contacts after every signed intake, and chasing down which deal a consent form belongs to. Each signed waiver, intake packet, or onboarding form that lives outside HubSpot is a reporting gap — invisible to pipeline dashboards and impossible to automate against. The team wants every signed document to land as a HubSpot contact record the same second the client finishes signing.
Formfy's public REST API and webhook firehose let HubSpot subscribe to the form.signed event via Zapier, Make, or a custom Private App. Every signed intake creates or updates a contact with no manual data entry.
The workflow at a glance
Trigger
A client signs a Formfy intake, consent, or waiver form
Action
Formfy fires a webhook; your automation creates or updates the HubSpot contact
Result
Contact record in HubSpot reflects the signed form with signer email, timestamp, and PDF link
Step-by-step: connect HubSpot to Formfy
Wire Formfy webhook subscriptions into HubSpot to sync signed-form data to contacts.
Generate a Formfy API key
Open the Formfy dashboard, navigate to Settings → API Keys, and click Create key. Save the fk_live_… token to a password manager — Formfy displays it once. Use the fk_test_… key while building so test submissions do not count against live credits.
List your existing Formfy webhooks
Call GET /api/v1/webhooks with your Bearer token to see what event listeners already exist. If a form.signed subscription is already wired, point your HubSpot automation at that same endpoint rather than creating a duplicate that fires twice on every signature.
GET
/api/v1/webhooksSee in the OpenAPI spec →Subscribe HubSpot to the form.signed event
POST /api/v1/webhooks with target_url set to your Zapier catch hook, Make webhook, or HubSpot Private App receiver URL, and event_types containing form.signed. Formfy returns a signing secret — store it in the automation platform credential vault to verify deliveries.
POST
/api/v1/webhooksSee in the OpenAPI spec →Map the payload to a HubSpot contact
The form.signed payload includes signer_email, signer_name, form_id, submission_id, and signed_at. In your automation, use signer_email as the upsert key against the HubSpot Contacts API. Map signer_name to firstname plus lastname and write signed_at to a custom date property defined in HubSpot.
Attach the signed PDF to the contact
Call GET /api/v1/forms/{id}/signed-pdf to retrieve the signed document URL. Pass the URL to the HubSpot Files API, then attach the resulting file id to the contact (or to a deal) so reps can open the executed PDF directly from the HubSpot timeline.
GET
/api/v1/forms/{id}/signed-pdfSee in the OpenAPI spec →
Subscribe HubSpot to Formfy signed-form webhooks
Create a webhook subscription that fires on every form.signed event. target_url is your Zapier catch hook or HubSpot Private App receiver. Formfy returns a signing secret used to verify each delivery via HMAC-SHA256.
curl -X POST https://formfy.ai/api/v1/webhooks \
-H "Authorization: Bearer fk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://hooks.zapier.com/hooks/catch/12345/abc/",
"event_types": ["form.signed"]
}'Frequently asked questions
Do I need a HubSpot Marketplace app to connect Formfy?
No. Connect Formfy to HubSpot via Zapier, Make, or a custom HubSpot Private App today. A native HubSpot Marketplace app is on the roadmap but not required to ship live automations. Webhook subscriptions plus the public REST API cover every event a HubSpot workflow needs.
Which Formfy events can drive a HubSpot workflow?
Five event types are live in v1: form.created, form.sent, form.viewed, form.signed, and form.expired. form.signed is the highest-leverage trigger for HubSpot — every signature can create or update a contact, advance a deal stage, or attach a PDF to a record. Subscribe to multiple events on one webhook by listing them in event_types.
How do I create a HubSpot contact from a Formfy submission?
In Zapier, use Webhooks by Zapier as the trigger and HubSpot Create or Update Contact as the action. Use signer_email as the upsert key. In Make, the HubSpot CRM module exposes the same upsert behavior. With a Private App, POST to the HubSpot Contacts API with the email as the unique identifier — HubSpot handles the create-or-update logic server-side.
Can I attach the signed PDF to a HubSpot deal?
Yes. Call GET /api/v1/forms/{id}/signed-pdf with your Bearer token to retrieve the executed PDF. Upload it via the HubSpot Files API and attach the file id to the deal record. The signed PDF appears on the deal timeline where reps and ops can open it without leaving HubSpot.
How do I verify the webhook signature in a HubSpot Private App?
Formfy signs every delivery with HMAC-SHA256 over the raw body using the secret returned at subscription time. Read X-Formfy-Signature from the request, recompute HMAC-SHA256(secret, raw_body), and reject the request if the values do not match. The signing secret is rotatable via POST /api/v1/webhooks/{id}/rotate-secret.
What happens if HubSpot is unreachable when a form is signed?
Formfy queues the webhook delivery and retries with exponential backoff for up to 24 hours. Once your endpoint recovers, queued deliveries fire automatically. The Formfy dashboard Webhook Deliveries log shows every attempt with status and response body so you can replay a delivery manually if needed.
Does API access work on the Formfy free trial?
Yes. The 15-day Formfy free trial includes full API access. Generate an fk_test_… key during the trial and validate the end-to-end HubSpot sync before upgrading. Rate limits scale with the plan tier; check the X-RateLimit-Remaining response header on every API call to monitor usage.
Ready to wire HubSpot into Formfy?
Spin up an API key, run your first webhook, and route signed forms wherever your team already works.
