Product workflow7 min readKeep one real product question in mind as you read.
A useful way through

Start with one real question and leave with a next step.

Start with the question in front of you, then use the guide to make the next decision easier.

Try saying

“I am trying to make this decision. What should I look at first?”

Start with context

Bring the smallest useful example.

Look for the signal

Separate what is known from what is assumed.

Take one step

Choose an action you can review.

fonio.ai Integration

What it does

fonio.ai runs AI voice agents that answer your phone line. Once its post-call webhook is configured, each call becomes a structured signal in your product graph, so the things customers say out loud — the ones that never make it into a support ticket — end up next to your Slack threads and Jira issues.

From each call Specky captures the transcript, fonio.ai's own summary, the caller's number, the recording link, and any custom fields your assistant was told to extract (an order number, a plan tier, a churn reason).

It also works the other way: with an outbound number configured, you can have your fonio.ai assistant call a customer back about a specific piece of feedback, without leaving Specky.

Before you start

You need a fonio.ai account with at least one assistant answering a number. Outbound calling additionally needs a fonio.ai Teams plan, completed KYC, and an imported or SIP number — inbound transcripts work on any plan.

Step 1 — Connect your API key

  1. Open app.fonio.ai/api-keys and create a workspace API key
  2. In Specky, go to Settings → Integrations and find the fonio.ai card
  3. Click Connect and paste the key
  4. Optionally enter one of your fonio.ai numbers in international format (+4312345678) — only needed if you want Specky to place outbound calls

Specky verifies the key against fonio.ai immediately. A wrong key fails here, not silently three days later.

Step 2 — Send your calls to Specky

This step is not optional, and it cannot be done later for calls that already happened.

fonio.ai's API has no call-history endpoint. Specky cannot poll fonio.ai, cannot ask "what happened yesterday", and cannot backfill. Calls reach Specky only because fonio.ai pushes them at the moment they end. Until this step is done, your fonio.ai card will say connected and your graph will stay empty.

First, get your webhook details:

  1. On the connected fonio.ai card in Settings → Integrations, click Show webhook setup
  2. Copy the webhook URL and the signing secret

Then set up delivery in fonio.ai. There are two ways, and Specky accepts both — pick whichever your assistant already uses.

Option A — Nachverarbeitung → API Request (simplest)

fonio.ai sends its own complete payload. Nothing to compose.

  1. Open your assistant in fonio.ai → Nachverarbeitung (post-processing) → API Request
  2. URL: paste the webhook URL from Specky
  3. Method: POST
  4. Headers: add x-specky-webhook-secret with the signing secret as its value
  5. Save

Option B — Integrations → HTTP Request (more control)

Use this if you want to send extra fields your assistant extracted during the call.

  1. Open your assistant in fonio.ai → Integrations → add an HTTP Request integration
  2. Set When it runs to After — this is the step people miss. Pre runs before pickup, when no conversation exists yet, and During fires mid-call. Only After has a transcript.
  3. URL: paste the webhook URL from Specky
  4. Headers: add x-specky-webhook-secret with the signing secret
  5. Body: include at least these variables — click Add Variable to insert each one:
{
  "conversationId": "{{conversationId}}",
  "plainTranscript": "{{plainTranscript}}",
  "personNumber": "{{personNumber}}",
  "direction": "{{direction}}",
  "startTimestamp": "{{startTimestamp}}",
  "conversationLink": "{{conversationLink}}"
}
  1. Save

Any additional keys you add are kept on the signal. If your assistant extracts an order number, add "orderNumber": "{{orderNumber}}" and it travels with the transcript.

If your tool can't send custom headers (some Make and n8n setups), append the secret to the URL instead: …/api/integrations/fonio/webhook?workspace=…&secret=YOUR_SECRET. Treat that URL like a password — anyone holding it can write into your workspace.

Step 3 — Verify with a real call

Test calls made in the fonio.ai browser widget do not fire webhooks. You have to dial the number from an actual phone.

  1. Call your fonio.ai number and say something a customer might say — "the export keeps timing out on large projects"
  2. Hang up and wait a few seconds for fonio.ai to finish post-processing
  3. Back in Specky, reopen Show webhook setup on the fonio.ai card

The card tells you what happened to the last delivery:

What you seeWhat it means
Last delivery received 1m agoWorking. Your call is in the graph.
Last delivery … wasn't ingested — a call arrived but carried no transcript, summary or id. Fields received: …fonio.ai reached Specky, but the body was missing the transcript. In Option B, check {{plainTranscript}} is actually in the body.
Nothing at allfonio.ai never reached Specky. Check the URL, and that the integration is set to run After.

Then go to Discovery and look for a signal named after your call.

Why there's no "Sync" button

Every other integration in Specky has one. fonio.ai doesn't, and it isn't an oversight — fonio.ai's public API exposes only outbound calling and an API-key test. There is no endpoint that lists past calls or returns a transcript, so there is nothing for a sync button to fetch.

The practical consequence: set the webhook up before the calls you care about happen. A call that ends while the webhook is misconfigured is not recoverable through Specky. That is also why the card reports delivery status — with no way to pull, being able to see that deliveries are arriving is the only feedback loop available.

Calling a customer back

With an outbound number saved, Specky can have your assistant place a call — for instance to follow up on a complaint that arrived through another channel.

Because this rings a real person's phone and costs real money, Specky requires you to confirm the exact destination number before dialling. A call where the confirmation doesn't match the destination is refused, and every call that does go through is written to your audit log with the number and who triggered it.

Carrier costs are billed by fonio.ai, not Specky.

Want an agent to work with fonio directly?

There is a separate unofficial, MIT-licensed community MCP on GitHub for fonio.ai's public API. Use that project when Claude, Cursor, ChatGPT, or another MCP client should work with fonio.ai itself. It is self-hostable and not affiliated with fonio GmbH. This Specky integration has a different job: it turns completed calls into searchable, citable product evidence.

Privacy

Call transcripts are customer personal data. They land in your workspace under the same access rules as every other signal, and are removed when you disconnect the integration. If you record calls, make sure your fonio.ai assistant's greeting handles consent for your jurisdiction — Specky stores what fonio.ai sends and does not add a consent step of its own.

Tips

  • Point a dedicated assistant at Specky rather than every line you own. A support line produces signal; an appointment-booking line mostly produces scheduling noise.
  • Have your assistant extract one or two structured fields (plan tier, order number) — they become filterable attributes on the signal.
  • If a caller mentions a competitor, an alert on competitor mentions will fire on call transcripts just like it does on Slack messages.

Ready to apply this?

Start with your own product and keep the first read grounded. You'll create an account before the guided result so it can be saved to your workspace.

Try the guided start