What you'll build
By the end of this guide, your form has its own webhook URL. Any tool that can send a webhook (a CRM, a payment app, Zapier, Make,...) can post data to it. Formaloo turns each request into a new form submission, or updates the right existing one. Your form's logic, emails, Google Sheets sync and outgoing webhooks then run as usual.
When to use this
Your CRM updates a contact, and the same person's submission in Formaloo should change too
A payment, booking or ticket tool fires an event, and you want it logged in a form automatically
The tool you use has no ready-made Formaloo integration, but it can send a webhook
Step-by-step
1. Open Incoming webhooks
In the left sidebar, click Integrations. Search for incoming and click the Incoming webhooks card.
ℹ️ This is different from the Webhook card. Webhook sends data out of Formaloo. Incoming webhooks receives data into Formaloo.
ℹ️ Only workspace admins and owners can add incoming webhooks.
2. Add a new webhook
Click + Add new webhook. Give it a Title your team will recognize, such as "HubSpot contacts". Then pick the form under Select a form.
💡 Click the form name in the list. Typing it isn't enough to select it.
⚠️ You can't move a webhook to another form later. To use a different form, create a new webhook.
3. Choose what happens when a request arrives
Under When a request arrives, pick one option. In this screen, a "record" means one form submission.
Create a record: every request adds a new form submission. Good for event logs, orders and tickets.
Update a record: the request changes a form submission that already exists. It never creates one.
Update or create: updates the matching form submission, or creates one if none matches. Good for keeping contacts in sync.
For Update a record and Update or create, choose an Identifier field. This is how Formaloo finds the right submission, for example by email.
⚠️ Only fields marked Unique appear in this list. If yours is missing, open the form editor, click the field, turn on Unique, and save.
💡 Already have the submission’s Formaloo ID? Send it as a top-level row_slug key to update that exact submission. You can find the ID in the webhook’s reply when it creates a submission, in the Record column of the Events tab, or as slug in Formaloo’s outgoing webhooks. Most tools don’t have this ID, and that’s fine: the identifier field (for example, Email) finds the right submission for you.
4. Choose how your tool proves it's allowed
Under Authentication, pick one:
Bearer token: the default, and what most tools support. Your tool sends
Authorization: Bearer <your token>.API key header: for tools that send a key in a header of their own. Keep
X-Api-Keyor type another header name. Formaloo generates the key for you. Standard headers likeAuthorizationorHostcan’t be used.None: anyone with the URL can send data. Formaloo asks you to confirm with I understand the risk. Use it only for testing, or for tools that can’t send a key.
Click Save and continue. A Copy your Bearer token window opens. Click Copy, store the token somewhere safe, tick I copied it, then click Done.
⚠️ You see this token only once. Formaloo can't show it again, even to admins. Don't refresh the page before you've copied it.
6. Send a real sample from your tool
Formaloo now shows Listening for a sample request, with a 15-minute timer and your Endpoint URL. Paste the URL into your tool and make it send one real request.
ℹ️ A sample never creates or changes a form submission. It doesn't trigger logic, emails or other webhooks either.
As soon as the request arrives, the page moves to Map fields by itself.
If the timer runs out, you'll see Timed out. Click Listen again and resend.
7. Map the sample to your form fields
Under Captured sample, click a value to map it to the next free field. Each click adds a row under Map to form fields. Check the Form field column, and change it if the value landed on the wrong field.
⚠️ Every key you map must be in each request your tool sends. If a mapped key is missing, Formaloo rejects that request. Map only the keys your tool always sends.
8. Save the mapping
Click Save mapping. Formaloo checks the mapping against your sample, then turns the webhook on. You'll see "Mapping saved. Your webhook is active and ready to receive requests."
9. Test with a live request
Send the same request again from your tool. Then check two places:
The form's Responses: a new or updated form submission appears.
The webhook's Events tab: each request shows its time, result and status code.
Status code | What it means |
201 | A form submission was created |
200 | An existing form submission was updated |
404 | Update a record found no match, so nothing changed |
409 | The webhook is off, or more than one form submission matches the identifier |
10. Change or turn off the webhook later
Open Integrations → Incoming webhooks, then click ⋮ next to your webhook:
Edit: a live webhook is read-only at first. Click Pause and edit to change it. Leave Turn it back on after saving ticked so it restarts when you save. While paused, requests are refused.
If your tool's data changed shape, go to Capture a sample → Capture a new sample and map again.
Event logs: see every request. Request bodies are removed after about 30 days.
Deactivate: stops the webhook without deleting it.
Delete: removes the webhook. Your tool's requests to its URL will fail.
Final result
Your form now receives data from any tool that can send a webhook. Each request creates or updates the right form submission, with no copy-pasting and no middleware. Your existing logic, emails, Sheets sync and outgoing webhooks run on that data automatically. The Events tab shows exactly what arrived and what happened, so you can trust the sync.






