Vouchfield

INTEGRATIONS AND API

Connect Vouchfield
to your other tools.

Start audits and collect results with the API, or get a signed message when an audit finishes. API access and webhooks are part of the Agency plan. Paid plans open soon. Start free today. A HubSpot connection is coming soon (early access for Agency workspaces).

Built and working

REST API

Available

Connect agency tools to documented audit and result endpoints.

Part of the Agency plan. Paid plans open soon. Start free today.

How it works
  1. Start with the contractOpen the live API documentation to inspect request fields, response schemas and authentication requirements.
  2. Use your API keySend your API key from a trusted server or secret store. Keep it out of browser code, public URLs and client reports.
  3. Handle completionTrack the returned job and inspect the result before acting. Handle failed jobs, quotas and retries in your integration.

Signed webhooks

Available

Receive a completion event and hand a finished audit to your next system.

Part of the Agency plan. Paid plans open soon. Start free today.

How it works
  1. Set a destinationThe workspace owner adds the https:// address in Settings → Webhooks, then sends a test message (event webhook.test) to check it arrives. You can also send webhook_url when you start an audit through the API.
  2. Check the eventEach message is signed. The workspace owner can reveal or replace the signing secret in Settings → Webhooks. Or fetch the audit by its id from the API, which needs your key.
  3. Process safelyUse the job identifier to recognize repeat events and handle retries. Review which fields the receiving system needs before storing or forwarding results.

Slack notifications

Available

Post a short completed-scan notification to a configured Slack channel.

Part of the Agency plan. Paid plans open soon. Start free today.

How it works
  1. Choose the channelCreate an incoming webhook in your Slack workspace for the channel that should receive scan notifications.
  2. Connect as the ownerUse the documented /v1/integrations/slack endpoint to save the webhook destination. Managing destinations requires owner permissions.
  3. Test the destinationRun a controlled audit and verify where its completion summary appears. Check channel membership before sending client context.

Website builder handoff

Available

Take useful audit findings into the tools your team uses to build websites.

How it works
  1. Pick the handoffChoose a reviewed report or a proposal PDF for your delivery team. On the Agency plan you can also build your own handoff with the API.
  2. Embed a first checkUse the supported lead widget when you want visitors to request a public audit from your agency website.
  3. Keep publishing separateUse your website builder's own review and publish process for client changes. An audit or proposal does not deploy those changes.

Build it yourself with our API

Zapier and Make, via webhooks and the API

Needs setup

Connect them with Zapier's and Make's own webhook and HTTP tools. There is no Vouchfield app in Zapier or Make.

Part of the Agency plan. Paid plans open soon. Start free today.

How it works
  1. Catch finished auditsUse Webhooks by Zapier (Catch Hook) or Make's Custom webhook, and give that address to Vouchfield as your webhook_url.
  2. Call the APIUse Zapier's Custom Request or Make's HTTP module with your API key as a Bearer token.
  3. Follow the guideThe step-by-step guide below lists every field Vouchfield sends and every API endpoint.

Salesforce, via the API and webhooks

Needs setup

There is no built-in Salesforce connection. You can send reviewed audit results to Salesforce yourself with the API and webhooks.

Part of the Agency plan. Paid plans open soon. Start free today.

How it works
  1. Choose the CRM recordDecide which record should receive an audit result and how your team will match it to an existing business.
  2. Build the handoffUse Vouchfield's REST API and signed webhooks with a receiver or automation tool that you configure. A native Salesforce connector is not included.
  3. Test the mappingVerify field permissions, duplicates and error handling on test records before activating changes to your CRM.

Coming soon

HubSpot

Coming soon

Send clients, shared proposals (as deals) and finished audits to your own HubSpot account.

A HubSpot connection is coming soon (early access for Agency workspaces).

How it works
  1. Create a service keyIn HubSpot, open Development → Keys → Service keys, create a key with the company, contact and deal scopes, and copy it (older accounts: a private app access token also works).
  2. Connect it in VouchfieldThe agency owner pastes the token in Workspace settings → CRM integrations. It is checked once and stored encrypted.
  3. Choose what to sendTick the events to send: new or changed clients, proposals shared in a client portal (a deal and a note), finished audits (a note). Nothing is sent until you tick one.

Not built yet

MCP server

Planned

A native MCP server is planned. Today an assistant can use the REST API, which is part of the Agency plan.

How it works
  1. Describe the agent workflowTell us which audit operations an assistant should be able to request and what approvals it should need.
  2. Read the API notesThe API notes show the audit endpoints an assistant can use today.
  3. Tell us what you'd use it forWrite to us through the contact page. It is planned, not built: there is no MCP server to connect to yet.

Duda

Planned

A native Duda connector is planned. Today, hand off with reviewed reports or the lead widget.

How it works
  1. Choose the handoffIdentify which audit findings or reports the website delivery team needs.
  2. Explore current optionsUse a report or a proposal PDF. On the Agency plan you can also build your own handoff with the API.
  3. Confirm availabilityThere is no native Duda connector to activate today. Discuss requirements before relying on this capability for a client offer.

Connect Vouchfield to Zapier or Make

API access and webhooks are part of the Agency plan.

There is no Vouchfield app in Zapier or Make. You connect them with tools they already have: a webhook that hears when an audit finishes, and an HTTP step that calls the Vouchfield API with your API key.

Before you start

  • An API key. The workspace owner makes one in Settings → API keys. It is shown once, so copy it straight away.
  • A Zapier or Make account.

Part 1. Get a message when an audit finishes

  1. In ZapierMake a new Zap. For the trigger, pick Webhooks by Zapier, then the event Catch Hook. Copy the address Zapier shows you.
  2. In MakeMake a new scenario. Add the Webhooks module Custom webhook, click Add, give it a name and copy the address Make shows you.
  3. Give that address to VouchfieldIn your workspace, open Settings → Webhooks, paste the address and save. Only the workspace owner can do this. The address must start with https://.
  4. Choose the eventsOn the same page, tick An audit finished. Tick An audit failed too if you want a message when an audit could not finish, for example because we couldn't reach the website.
  5. Send a test messageOn the same page, click Send a test message. It arrives within about a minute, with the event webhook.test. It is not an audit, so it has none of the audit fields.
  6. Wait for a real audit to finishRun one audit. Use its message as the sample: in Zapier, click Test trigger; in Make, run the scenario once while it waits for data.
  7. Map the fieldsPick the fields you need, such as business.name, score and report_url. The full list is below.

Example request. You can send it from a terminal, from an API tool such as Postman, or from a one-off Zapier or Make HTTP step.

curl -X POST https://vouchfield.com/v1/scan \
  -H "Authorization: Bearer YOUR_MAIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "yourclient.com", "webhook_url": "PASTE_THE_ZAPIER_OR_MAKE_ADDRESS_HERE"}'

What the message contains

Vouchfield sends a POST with a JSON body. The body is the same as GET /v1/scan/{id}.

HeaderWhat it means
X-Audit-EventWhat happened: scan.completed when an audit finishes, scan.failed when an audit fails (only if you tick it in Settings → Webhooks), or webhook.test for a test message you send from Settings → Webhooks.
X-Audit-IdAn id for this message. It stays the same when we retry it, so you can skip repeats. A message you send again yourself from the delivery log gets a new id.
X-Audit-TimestampWhen the message was sent, in seconds since 1970.
X-Audit-SignatureA signature made with your agency's signing secret. See the note on checking messages below.
FieldWhat it means
idThe audit id. Use it to fetch the result from the API.
statusdone in a scan.completed message, failed in a scan.failed message.
started_atWhen the audit was started (UTC).
finished_atWhen the audit finished or failed (UTC).
failure_reasonOnly in a scan.failed message: site_unreachable if we couldn't reach the website, otherwise error. Empty (null) for a finished audit.
urlThe website that was checked.
report_urlA link to the report. Anyone with it can open the report, unless the audit was started with private set to true.
business.name, business.town, business.st, business.phoneThe business we found for the website.
business.industryThe type of business we detected.
business.matched_listingtrue if we matched the business to a Google listing.
business.contextThe business type used for the audit (for example local or online) and why.
scoreThe overall score, from 0 to 100.
categoriesOne entry per area, each with score, pass, warn, fail and total.
top_fixesUp to five of the most important fixes. Each has id, name, problem, status, detail and fix.
checksEvery check. Each has id, category, name, problem, status, detail, fix, weight and manual. Status is pass, warn, fail or skip.
manualIn each checks item: true for a question the agency added to its template and answered by hand. Its status is the agency's answer, not something the audit measured. false for every check the audit ran.
problemIn each top_fixes and checks item: what is wrong, in plain words, when the check failed or needs work, such as "The site doesn't use HTTPS". Empty (null) when the check passed or was not checked, and for questions you added to a template yourself. name stays the check's own name, which describes what passing looks like ("Site uses HTTPS").
summaryOne plain sentence about the website.
ai_auditThe id of the AI visibility check, if one ran with this audit. Otherwise empty.
credit_returnedtrue only for a failed audit whose credit we gave back because we couldn't reach the website. Always false in a scan.completed message.
noteA short note from the audit, often empty.

A test message from Settings → Webhooks has the event webhook.test, the same headers and signature, and always this body:

{"event": "webhook.test", "test": true, "message": "This is a test message from Vouchfield. It is not an audit."}

Part 2. Call the Vouchfield API from Zapier or Make

  1. Add an HTTP stepIn Zapier, add the action Webhooks by Zapier, then Custom Request. In Make, add the HTTP module Make a request.
  2. Point it at the APIUse the address https://vouchfield.com plus the endpoint, for example https://vouchfield.com/v1/scan/ followed by the id from the message.
  3. Add your keyAdd one header. Name: Authorization. Value: Bearer, a space, then your API key.
  4. Send JSON when you start an auditFor POST /v1/scan, set the body type to JSON and send at least url. Add an Idempotency-Key header with a value that is unique to that row or record. If Zapier or Make retries the step, you won't pay for a second audit.
MethodEndpointWhat it does
POST/v1/scanStart an audit. Send url (required). You can also send name, town, st, business_type (auto, local, service_area, software or online), profile, webhook_url and private. You get back id, status_url and report_url. Anyone with report_url can open the report; send private: true to keep it to your workspace. Uses one credit.
GET/v1/scan/{id}Get an audit. The fields are the same as the webhook message. status is running, done or failed.
GET/v1/meYour agency name, today's usage and whether you have credits left. The main key also sees the saved webhook address.
GET/v1/planYour current plan, its monthly credits (or free trial) and daily limit.
GET/v1/scansYour audits, a page at a time. Filter with status (done, failed, running, queued or any) and site. Use next_cursor for the next page.
GET / POST/v1/seatsList your extra API keys, or make a new one. Only the main key can make keys. The owner can also do this in Settings → API keys.
DELETE/v1/seats/{id}Switch off one extra key.
POST/v1/integrations/slackSend finished-audit notes to a Slack channel. Main key only.
GET/v1/openapi.jsonA machine-readable description of the API.

The full notes are at /v1/docs.

Two simple recipes

  1. Finished audit to a spreadsheetTrigger: the catch hook above. Step 2: GET /v1/scan/{id} with the id from the message. Step 3: add a row with business.name, url, score and report_url.
  2. New row to a new auditTrigger: a new row in your sheet or a new deal in your CRM. Step 2: POST /v1/scan with the website from that row. When the audit finishes, the catch hook above picks it up.

Good to know

  • Which audits send a message: every audit for your agency that finishes, whether you started it in your workspace, through your website widget or through the API. An audit that fails sends a scan.failed message only if you ticked An audit failed. If we couldn't reach the website, credit_returned tells you whether the credit came back.
  • One address per agency. To change it or stop the messages, open Settings → Webhooks in your workspace. Removing the address cancels messages that have not been sent yet. You can also set it with webhook_url when you start an audit through the API with your main key.
  • Checking messages: each message is signed. The workspace owner can reveal the signing secret in Settings → Webhooks. Replacing it there stops the old secret at once. Zapier's and Make's catch hooks can't check the signature, so treat the message as a tip-off. Before you act on it, fetch the audit with GET /v1/scan/{id} and your key. Only your own API keys can read your audits.
  • Test messages: X-Audit-Event is webhook.test and the body is always the small JSON shown above. Skip it in your Zap or scenario, for example with a filter on the test field.
  • Delivery log: Settings → Webhooks shows the last 10 messages, the answer your address gave and how many tries it took. Open a message to see every try, and click Send again to send a finished message once more.
  • If your address keeps failing: after 3 messages in a row fail every try, we switch webhook messages off and email the workspace owner. Fix the address, then click Turn messages back on in Settings → Webhooks.
  • Retries: your catch hook must answer within 10 seconds with a success code. If it doesn't, we try again after about 1 minute, 5 minutes, 25 minutes and 2 hours, then stop. Zapier and Make answer straight away, so this is rare.
  • Keys: give Zapier or Make its own key. Make one in Settings → API keys (or with POST /v1/seats and your main key). You can switch that key off, or replace it, on its own. That key can start and read audits.
  • Speed limit: each key can make 120 requests a minute. Beyond that the API answers 429 with a Retry-After header saying how many seconds to wait.
  • Plans: Webhooks by Zapier and Make's webhook and HTTP modules are Zapier and Make features. Check that your Zapier or Make plan includes them.