ElevenLabs Integration
What it does
ElevenLabs voice agents hold real conversations with your customers over a web widget, a phone line, or WhatsApp. This integration brings each finished conversation into Specky: the full transcript, ElevenLabs' summary, whether the call met your evaluation criteria, and — most usefully — the structured fields your agent was told to collect, like which competitor came up or how many seats they need.
It also works outbound: Specky can read a written update aloud as an MP3 using your own ElevenLabs voice and quota.
Step 1 — Connect
Conversations start arriving on the next sync.
Step 2 — Live delivery (optional)
Unlike fonio, ElevenLabs *does* have a conversation-history API, so Specky can pull. A webhook just makes conversations arrive the moment a call ends rather than on the next sync.
Every delivery's signature is verified against that secret, so nobody can inject fabricated conversations into your graph. Deliveries older than 30 minutes are rejected as replays.
Because ElevenLabs mints this secret, Specky can't rotate it for you — the webhook card has no Regenerate button. To rotate, create a new secret in ElevenLabs and reconnect here.
Pull and push together
Both paths key on the conversation ID, so a conversation that arrives twice updates one signal rather than creating two. Pull also backfills history the webhook never saw.
Older conversations are never deleted by a sync: ElevenLabs history is append-only, so "not in the latest batch" means "older", not "deleted upstream".
Audio briefs
With a default voice set, Specky can turn a written update — a stakeholder summary, an exec brief — into an MP3. Synthesis runs on your own ElevenLabs key and quota, and counts against your Specky generation limit.
Live agent tools in chat (optional)
Conversation sync above is separate from live agent management. To let Specky's chat list, create, and update your ElevenLabs agents (and generate speech) through ElevenLabs' hosted MCP:
elevenlabs_* tools for agents, conversations, and TTSThat OAuth connection is stored separately as ELEVENLABS_MCP. It does not replace the API key used for transcript sync — you can (and usually should) have both. Isolated data-residency workspaces append ?region=eu, ?region=in, or ?region=sg to the connect URL.
Tips
competitor: Linear is far more useful, because it's filterable.