SignatoroSignatoro
  • Features
  • Pricing
  • About
  • AI assistantsHelp while you work, when you ask
    • ChatGPT
    • Claude
    • Grok
    • Gemini
    • Copilot
    • Shortwave
    • Fyxer
    AI agentsWork for you on their own
    • Grok Bot
    • OpenAI dots
    • OpenClaw
    • Hermes Agent
    • Manus
    • Cue
    • Meta Muse
    • Claude Duet
    • Poke
    Agentic toolsBuild agents and automations
    • Lindy
    • Notion agents
    • n8n, Zapier, Make
    • Coding agents
    • All AI agents
    Agentic infrastructureWhat agents run on and send through
    • MCP server
    • Signature API
    • Signature API docs
    • Microsoft Agent 365
    • AgentMail
    • Nylas
  • Help
    • FAQ Setup, pricing and deliverability
    • Blog Guides on email signatures and footers
    • Docs Set up your signature in any mail app
    Compare
    • Comparison hub Signatoro next to each per-seat tool
    • Best email signature software How to choose a signature tool
  • Contact
SignatoroSignatoro
One email signature for humans and AI agents. Signatoro is the agentic email signature platform: save your signature once, and your people and every AI agent you connect use the same one.

© Copyright 2026 Signatoro. All Rights Reserved.

  • About Signatoro
  • Blog
  • Contact

  • Features
  • Pricing
  • For companies
  • FAQ

  • AI agent signatures
  • ChatGPT
  • Claude
  • Claude Duet
  • Grok Bot
  • OpenClaw
  • MCP server
  • Signature API
  • Agent setup guides

  • Compliance hub
  • AI email disclosure
  • CAN-SPAM
  • GDPR
  • UK company

  • Free tools hub
  • Signature generator
  • Signature disclaimer kit
  • Email signature templates

  • All guides
  • Make an email signature
  • Add a signature in Gmail
  • Add a signature in Outlook
  • Add a signature in Apple Mail
  • Add a signature on iPhone

  • Best email signature software
  • All alternatives
  • Signatoro vs Exclaimer
  • Signatoro vs WiseStamp
  • Signatoro vs Newoldstamp
  • Signatoro vs CodeTwo
  • Signatoro vs Opensense
  • Signatoro vs MySignature
  • Signatoro vs Letsignit
  • Signatoro vs Canva
  • Signatoro vs HubSpot generator

  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Cookie settings
About
  • About Signatoro
  • Blog
  • Contact
Product
  • Features
  • Pricing
  • For companies
  • FAQ
AI agents
  • AI agent signatures
  • ChatGPT
  • Claude
  • Claude Duet
  • Grok Bot
  • OpenClaw
  • MCP server
  • Signature API
  • Agent setup guides
Compliance
  • Compliance hub
  • AI email disclosure
  • CAN-SPAM
  • GDPR
  • UK company
Free tools
  • Free tools hub
  • Signature generator
  • Signature disclaimer kit
  • Email signature templates
How to
  • All guides
  • Make an email signature
  • Add a signature in Gmail
  • Add a signature in Outlook
  • Add a signature in Apple Mail
  • Add a signature on iPhone
Compare
  • Best email signature software
  • All alternatives
  • Signatoro vs Exclaimer
  • Signatoro vs WiseStamp
  • Signatoro vs Newoldstamp
  • Signatoro vs CodeTwo
  • Signatoro vs Opensense
  • Signatoro vs MySignature
  • Signatoro vs Letsignit
  • Signatoro vs Canva
  • Signatoro vs HubSpot generator
Legal
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Cookie settings
  • In Claude's connector directory
  • In ChatGPT's plugin directory
  • On the Zoho Marketplace
Documentation
  • Make a signature
  • Review badge
  • Calendly link
  • Install your signature
    • Gmail
    • Outlook
    • New Outlook and the web
    • Classic Outlook on Windows
    • Outlook for Mac
    • Outlook app on phones
    • Apple Mail on Mac
    • iPhone and iPad
    • Zoho Mail
      • Admin guide
    • AI agents
      • Claude
      • Claude Duet
      • ChatGPT
      • Grok
      • Grok Bot
      • Gemini
      • Copilot
      • Browser agents
      • n8n, Zapier and Make
      • MCP server
      • Nylas
      • Gmail API
      • Microsoft Graph
      • Power Automate
      • Gmail and Outlook MCP
      • Apps Script
      • Resend, SendGrid, Postmark, SMTP
      • Base44
      • Twenty
      • Webhooks
    • Proton Mail
    • Tuta Mail
    • Fastmail
    • mailbox.org
    • Yahoo Mail
    • AOL Mail
    • iCloud Mail
    • Titan Email
    • GoDaddy email
    • IONOS Webmail
    • Rackspace Email
    • Roundcube
    • Thunderbird
    • eM Client
    • Mailbird
    • Spark
    • Superhuman
    • HEY
    • Samsung Email
    • Front
    • Zimbra
    • Missive
    • Pipedrive
    • Zendesk
    • Freshdesk
    • Help Scout
    • Intercom
    • Gorgias
    • Salesforce
    • Artisan
    • HubSpot
  • Short links and UTM
  • Features
  • Pricing
  • About
  • Contact
  • Signatoro webhooks: get an event when a signature or a team changes

    Signatoro posts a signed event to your URL when a signature changes and when someone is invited to, joins or leaves your company. Events, payloads and how to check the signature.

    Published November 3, 2026

    Signatoro posts an event to a URL you choose when something changes, so a CRM, a spreadsheet, an n8n or Zapier workflow or your own app can follow along without asking the API on a schedule. Add an endpoint on the Connect page, under Automations, on every plan.

    Which events you get

    An endpoint on your own account gets your signature's events. A company owner can also add an endpoint for the company, which gets every member's signature and the team's changes.

    EventWhen
    signature.updatedA signature changed: the person saved it (on Signatoro or through an AI assistant), the owner edited their details, or the owner changed the company brand (one event per member).
    member.invitedThe owner invited someone to the company.
    member.joinedSomeone accepted their invitation.
    member.removedAn invitation was withdrawn ("was": "invited"), or a member left or was removed ("was": "member").
    webhook.testYou pressed "Send test".

    What each event looks like

    Every event is a JSON POST with the same envelope:

    {
      "id": "evt_6f1c2b0e9d7a4c1f8e3b5a2d4c6e8f0a",
      "type": "signature.updated",
      "created_at": "2026-11-03T10:00:00.000Z",
      "account_id": "the account the endpoint belongs to",
      "data": {
        "person": { "id": "...", "name": "Maya Okafor", "email": "maya@northwind.example" },
        "company_id": "...",
        "signature": {
          "html": "<table>...</table>",
          "text": "Maya Okafor\nHead of Sales, Northwind\n...",
          "fingerprint": "3f2a..."
        }
      }
    }
    

    signature.html and signature.text are the same signature the API and the MCP server return. fingerprint changes only when the signature does, so you can skip an event whose fingerprint you already have.

    Member events carry company_id and email; member.joined and member.removed for a member also carry person with their id and name.

    Check that an event came from Signatoro

    When you add an endpoint, Signatoro shows its signing secret once (whsec_...). Each event carries a Signatoro-Signature header:

    Signatoro-Signature: t=1793700000,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
    

    v1 is an HMAC-SHA256 of the timestamp, a dot and the raw request body, keyed with your secret. Check it before you trust the event, and refuse one whose timestamp is more than five minutes old. In Node:

    import { createHmac, timingSafeEqual } from 'node:crypto';
    
    function fromSignatoro(rawBody, header, secret) {
      const parts = Object.fromEntries(
        header.split(',').map((part) => part.split('=')),
      );
      const age = Math.abs(Date.now() / 1000 - Number(parts.t));
    
      if (age > 300) return false;
    
      const expected = createHmac('sha256', secret)
        .update(`${parts.t}.${rawBody}`)
        .digest();
      const given = Buffer.from(parts.v1 ?? '', 'hex');
    
      return given.length === expected.length && timingSafeEqual(given, expected);
    }
    

    Use the body exactly as it arrived; parsing and re-serializing the JSON changes it.

    Delivery

    • Answer with any 2xx status within 10 seconds. Signatoro does not read the response body.
    • A timeout, a network error, a 429 or a 5xx is tried again after 2 and then 8 more seconds. Other 4xx answers are not retried.
    • Redirects are not followed: give the final URL.
    • The URL must use https and a public address.
    • Events can arrive more than once or out of order. Use id to drop repeats and created_at to order them.
    • The Connect page shows the last delivery for each endpoint, and "Send test" sends a webhook.test event at once (one every 10 seconds).
    • An account can have up to 5 endpoints.

    For agents

    To react to a signature change, ask the person to add an endpoint on the Connect page (Automations tab) and keep the secret it shows. Check the Signatoro-Signature header on every event, and fetch the signature from the API at send time as before: signature.updated tells you it changed, the API stays the source for each email.

    Related guides

    • Give your signature to an AI agent
    • Use Signatoro in Twenty CRM

    Was this page helpful?

    Connect my agent

    Add Signatoro to your agent as an MCP server:

    https://signatoro.com/mcp

    Then ask it to make your email signature. It gives you a link to save it to Signatoro.

    Or start on the site:Build my signature, free

    Connect my agent

    Add Signatoro to your agent as an MCP server:

    https://signatoro.com/mcp

    Then ask it to make your email signature. It gives you a link to save it to Signatoro.

    Or start on the site:Build my signature, free