Signal - Third-party - Custom API Signals
Last updated: February 11, 2026

Custom API signals let you send data from any external tool (Zapier, Clay, RB2B, your own app, etc.) into Duo Copilot via a webhook. Whenever new data arrives, Duo generates a signal and can automatically create personalized sequences for each lead.
Use cases: website visitors, inbound form submissions, product usage triggers, event attendees — anything you can send via an HTTP request. If you're looking for inspiration for more inspiration, check our playbook repository.
How to set it up
1. Appearance

Signal name — The internal name for this signal.
Signal label — How it appears on the Duo Copilot feed for your team (e.g. "New inbound lead", "Website visitor").
2. Signal target

Choose whether the data you're sending represents individual people or companies.
People — A signal is triggered for every new person detected.
Companies — A signal is triggered for every new company detected. Duo will suggest multiple contacts from that company who match your filters.
3. Configure the webhook and send test request

3.1. Configure webhook
You'll get a unique webhook URL. Copy it and configure it as the destination in your external tool (Zapier, Clay, Make, your backend, etc.).
The endpoint accepts a POST request with a JSON body containing the data fields you want to send.
If you need additional help here, we have specific help center articles for some of the most common you might want to integrate with:
3.2. Send a test request
Send a sample payload from your external tool so Amplemarket knows what data to expect. The setup screen will confirm once test data is received.
Good to know: During the initial setup, any requests sent to the webhook are treated as test data so you can configure your mappings — no leads will be generated based on these initial requests. Once you save the signal though, all subsequent requests will be treated as real and generate leads.
5. Review enrichment mappings

After receiving test data, Amplemarket will auto-map your fields to the identifiers it needs to look up each person or company. Review the mappings and adjust if needed.
Why this matters: Amplemarket uses these identifier fields to match your data with real people and companies in its database. Without a match, Duo can't enrich the lead (no email, no LinkedIn, no way to reach out), so those leads won't be processed.
For people signals, map at least one of:
LinkedIn URL
Email
Person name + Company (name or domain)
For company signals, map at least one of:
Company name
Company domain
Company LinkedIn URL
Tip: If your data includes an email address and you want Duo to process every lead — even if it can't match them with someone in our database — enable "Generate leads even if enrichment fails" under Advanced settings. See the FAQ below for details on how this works.
6. AI personalization fields (optional)
Select which fields from your data Duo should use as additional context when writing sequences.
Rule of thumb: pick additional context fields that explain why each person is a relevant lead or what they did (e.g. pages visited, form responses, product usage data). General info like job title or company is already provided via Amplemarket enrichment.
7. Signal prompt
Tell Duo how to approach leads from this signal. A good prompt covers:
What the signal is — e.g. "These are leads who just filled out our demo request form."
How to use the context/AI personalization fields — e.g. "Use the 'use_case' field to tailor the messaging to their needs."
How to approach the leads — e.g. "Be helpful, reference their interest, and suggest a quick call."
FAQs
What's the difference between Custom API Signals and Custom CRM Signals?
Custom CRM Signals pull data from a Salesforce report or HubSpot list. Custom API Signals accept data from any tool via a webhook. If your data lives in your CRM, use CRM Signals. If it comes from somewhere else (your product, a third-party tool, a marketing platform), use API Signals.
Do I need a developer to set this up?
Not necessarily. If you're using no-code tools like Zapier, Make, or Clay, you can configure the webhook without writing any code. You just need to know which fields your external tool sends.
If you need additional help here, we have specific help center articles for some of the most common you might want to integrate with:
How do I send test data?
Send a POST request to your webhook URL with a JSON body. Examples:
cURL:
curl -X POST https://api.amplemarket.com/custom_signals/<your_signal_id>/entries \
-H "Content-Type: application/json" \
-d '{ "email": "jane@acme.com", "full_name": "Jane Smith", "company_name": "Acme", "pages_visited": "/pricing, /demo" }'Zapier / Make / Clay: Add an HTTP/webhook action, set method to POST, paste your webhook URL, and configure the JSON body with the fields you want to send.
How long until leads show up in my Duo Copilot feed?
Duo checks for new leads and attempts to generate them roughly every hour. Once your signal is set up and data is coming in, you can expect leads to appear within the next hour at most.
Keep in mind that Duo has a daily lead limit per user. Even though Duo runs every hour, it will only generate leads up to your configured limit.
What happens if I send the same person or company more than once?
Each request is treated as a separate signal. If someone visits your website today and you send it to Duo, that's one signal. If they visit again next month and you send it again, Duo treats it as a second signal.
How does test data vs. live data work?
During setup: While you're creating a signal, any requests sent to the webhook URL are treated as test data. They're used to configure your field mappings — no leads are generated.
After creation: Once you save the signal, all subsequent requests generate real leads.
When editing: If you edit the signal later and click refresh to update mappings, Duo will pick up the latest request received — which at that point will be a real request, not a test.
What if Amplemarket can't match a lead with someone in its database?
By default, unmatched leads are skipped — Duo has no way to reach out without contact details.
If your data includes an email and you want Duo to process every lead regardless of whether it finds a match, go to Enrichment settings > Advanced settings and enable "Generate leads even if enrichment fails".
Note: unenriched leads will bypass most signal filters. Only exclusion lists and recently contacted filters will still apply.
Is the webhook URL secure?
The webhook URL contains a unique token specific to your signal. Anyone with the URL can send data to it. Treat it like a secret — avoid sharing it publicly or committing it to public repositories.
What format should the payload be in?
The endpoint accepts a JSON body (Content-Type: application/json). Nested objects are supported — Amplemarket will flatten them into dot-notation paths (e.g. person.name, company.domain) for field mapping. Maximum payload size is 1MB.
What HTTP status codes does the endpoint return?
CodeMeaning | |
202 Accepted | Request received successfully |
400 Bad Request | Malformed JSON, empty body, or non-object payload |
404 Not Found | Invalid webhook token |
413 Content Too Large | Payload exceeds 1MB |
Can I update the field mappings after creating the signal?
Yes. Edit the signal from your Duo Copilot settings and click refresh to pull in the latest request received. Duo will use it to update the available fields and mappings.