fonio Integration

What it does

fonio runs AI voice agents that answer your phone line. This integration turns every call they handle into 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'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 assistant call a customer back about a specific piece of feedback, without leaving Specky.

Before you start

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

Step 1 — Connect your API key

  • Open app.fonio.ai/api-keys and create a workspace API key
  • In Specky, go to Settings → Integrations and find the fonio card
  • Click Connect and paste the key
  • Optionally enter one of your fonio numbers in international format (+4312345678) — only needed if you want Specky to place outbound calls
  • Specky verifies the key against fonio 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's API has no call-history endpoint. Specky cannot poll fonio, cannot ask "what happened yesterday", and cannot backfill. Calls reach Specky only because fonio pushes them at the moment they end. Until this step is done, your fonio card will say connected and your graph will stay empty.

    First, get your webhook details:

  • On the connected fonio card in Settings → Integrations, click Show webhook setup
  • Copy the webhook URL and the signing secret
  • Then set up delivery in fonio. There are two ways, and Specky accepts both — pick whichever your assistant already uses.

    Option A — Nachverarbeitung → API Request (simplest)

    fonio sends its own complete payload. Nothing to compose.

  • Open your assistant in fonio → Nachverarbeitung (post-processing) → API Request
  • URL: paste the webhook URL from Specky
  • Method: POST
  • Headers: add x-specky-webhook-secret with the signing secret as its value
  • Save
  • Option B — Integrations → HTTP Request (more control)

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

  • Open your assistant in fonio → Integrations → add an HTTP Request integration
  • 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.
  • URL: paste the webhook URL from Specky
  • Headers: add x-specky-webhook-secret with the signing secret
  • 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}}"
    }

  • 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 browser widget do not fire webhooks. You have to dial the number from an actual phone.

  • Call your fonio number and say something a customer might say — *"the export keeps timing out on large projects"*
  • Hang up and wait a few seconds for fonio to finish post-processing
  • Back in Specky, reopen Show webhook setup on the fonio card
  • The card tells you what happened to the last delivery:

    What you seeWhat it means

    *Last delivery received 1m ago*Working. Your call is in the graph. *Last delivery … wasn't ingested — a call arrived but carried no transcript, summary or id. Fields received: …*fonio reached Specky, but the body was missing the transcript. In Option B, check {{plainTranscript}} is actually in the body. Nothing at allfonio 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 doesn't, and it isn't an oversight — fonio'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, not Specky.

    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 assistant's greeting handles consent for your jurisdiction — Specky stores what fonio 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.