Documentation

Platform Documentation

The complete guide to mastering CertTrigger.

Quick Start Guide

In a rush? Here is how to send your first batch in under 2 minutes:

  1. 1Create a Template: Go to the Dashboard and click "Create New Template". Choose a preset or start blank.
  2. 2Add Dynamic Fields: Use the {{Field}} button to place placeholders like {{Name}} and {{Date}} on your design.
  3. 3Prepare Data: Create an Excel file with columns matching your placeholders (e.g. a column named "Name" and a column named "Date").
  4. 4Run Batch: Click "Run Job" on the template card — a three-step wizard opens: recipients, delivery, review.
  5. 5Launch: Pick your Excel file or a contact list, set the email subject/body (or load a saved template), review and press Launch.

Template Builder

Our drag-and-drop builder gives you pixel-perfect control over your certificates.

  • Backgrounds: Upload high-res images (300 DPI recommended for print). Supported formats: JPG, PNG.
  • Dynamic Fields: These are the magic of CertTrigger. Any text inside double curly braces {{...}} becomes a variable. You can change their font, color, and size just like normal text.
  • Layers & Locking: Use the Layers panel to reorder elements. Lock elements to prevent accidental movement while editing.
  • QR Codes: Add a QR code element to make your certificates verifiable. You can encode the certificate ID or a custom URL.
  • Keyboard Shortcuts: Use Ctrl+C / Ctrl+V to copy/paste elements. Use Arrow Keys for precise nudging (Shift+Arrow for 10px bumps).

Contacts & Data

Data is the fuel for your certificates. We support flexible data ingestion methods.

Excel / CSV Import

The most common way to bring in data. Ensure your first row contains unique headers. Dates should be formatted as text if specific formatting is required.

Smart Lists

Create reusable lists for recurring groups (e.g., "Class of 2024"). You can add to these lists manually or import in bulk. Lists verify emails to prevent bounce rates.

Processing & Emailing

The Job Runner is where the magic happens. It merges your Template with your Data.

Smart Preview

Always check the preview. It renders the first 5 records of your data onto the template so you can catch alignment issues.

Email Delivery

We use high-reputation IPs to ensure delivery. You can customize the "Sender Name" in your profile settings.

Email Variables

You can use `{{Name}}` etc. in the Email Subject and Body too, not just the certificate!

Webhooks & Automation

Integrate CertTrigger with Zapier, Slack, or your own backend using Webhooks.

When you configure a Webhook URL, we will send a POST request with the certificate details immediately after generation.

// <strong>Payload Structure:</strong> JSON object containing `certificate_id`, `recipient_email`, `pdf_url`, and `metadata`.

{
  "event": "certificate.generated",
  "data": {
    "certificate_id": "crt_123xyz",
    "recipient": {
      "email": "alice@example.com",
      "name": "Alice Smith"
    },
    "pdf_url": "https://certtrigger.com/d/crt_123xyz",
    "metadata": {
      "course": "Advanced React"
    }
  }
}

Security: All webhook requests include a signature header `X-CertTrigger-Signature` for verification.

API Access

For deep integration, use the REST API — one POST issues a verifiable certificate.

  • GETAuthentication: Bearer key from Profile → API keys (Pro and Enterprise plans). Send Authorization: Bearer ct_... on every request.
  • POSTPOST /api/v1/certificates: issue one verifiable certificate; returns the verify and PDF links. Subscribe to events with POST /api/v1/hooks.
  • GETGET /api/v1/templates: list your template IDs for integration pickers.
View full API Reference

FAQ & Troubleshooting

Why isn't my email sending?

Check the sending channel in your Profile: link your Gmail or Outlook account, or rely on the platform channel (paid plans). Then confirm your monthly email quota isn't exhausted — the dashboard shows usage; failed deliveries are refunded automatically.

What fonts are supported?

31 curated print-safe fonts, including 15 Arabic families (Cairo, Amiri, Readex Pro and more). Every font renders identically in the builder preview and the final PDF. Custom corporate fonts are on the roadmap — contact us if you need one.

How long do verification pages stay live?

Indefinitely. Every certificate keeps its public verify URL; you control its status — revoke it instantly or set an expiry date and the page flips to revoked/expired on its own. Recipients can re-download the PDF from the verify page at any time.

Can I issue certificates in Arabic?

Yes — the builder, the AI assistant, emails and verify pages are fully bilingual with native RTL. The AI designs Arabic certificates with proper fonts and direction; just describe what you want in Arabic.

How do live event certificates work?

Create an event form under Live events, connect a template and a contact list, then project the QR code. Attendees scan, fill the short form, confirm their email with a 6-digit code, and receive a verified certificate on the spot — or get collected into the list for a later batch.

Issue verifiable certificates programmatically. Create an API key in your Profile (Pro and Enterprise plans), then authenticate every request with a Bearer token. Limit: 120 requests per minute per key.

Base URL & authentication

Base URL:  https://certtrigger.com/api/v1
Header:    Authorization: Bearer ct_your_api_key

POST /certificates

Issues one verifiable certificate from a template you own. Data keys fill {{Placeholder}} fields; {{VerifyURL}} and {{CertificateID}} are added automatically (use them in QR elements).

curl -X POST https://certtrigger.com/api/v1/certificates \
  -H "Authorization: Bearer ct_..." \
  -H "Content-Type: application/json" \
  -d '{
    "templateId": "8b1e...uuid",
    "data": { "Name": "Layla Hassan", "Course": "Data Analysis", "Date": "July 2026" },
    "recipientEmail": "layla@example.com",
    "expiresAt": "2027-07-23T00:00:00Z"
  }'

Response (201):

{
  "certificateId": "VbXUxI-Wdts",
  "verifyUrl": "https://certtrigger.com/verify/VbXUxI-Wdts",
  "pdfUrl": "https://certtrigger.com/api/public/verify/VbXUxI-Wdts/pdf",
  "issuedAt": "2026-07-23T12:00:00.000Z"
}

GET /certificates/:certificateId

Returns status (valid / revoked / expired), recipient, view count and links for a certificate you issued.

GET /templates

Lists your templates (id, name, category) for integration pickers.

Error codes

CodeMeaning
API_KEY_REQUIREDMissing/malformed Authorization header
API_KEY_INVALIDUnknown or disabled key
FEATURE_NOT_IN_PLANYour plan does not include API access
VALIDATION_ERRORRequest body failed validation (details included)
NOT_FOUNDTemplate or certificate not found
429Rate limit exceeded — retry after the window resets

Outbound webhooks

Batches with webhooks enabled POST each recipient's data plus the certificate PDF (base64) to your endpoint — ideal for n8n or Zapier. Every request is signed: verify the X-CertTrigger-Signature header (sha256= HMAC of the raw body) using your signing secret from GET /api/webhooks/signing-secret.

REST hooks (event subscriptions)

Subscribe a URL to platform events and get called the moment they happen — this is what Zapier, Make and n8n use. Events: certificate.issued, claim.received (live event forms), batch.completed. Up to 10 subscriptions per account; URLs must be public https endpoints. Deliveries carry X-CertTrigger-Signature (same HMAC as webhooks) and X-CertTrigger-Event headers.

# subscribe
curl -X POST https://certtrigger.com/api/v1/hooks \
  -H "Authorization: Bearer ct_..." \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://hooks.example.com/certs", "event": "certificate.issued" }'

# list          GET    /api/v1/hooks
# unsubscribe   DELETE /api/v1/hooks/:id

Delivery payload:

{
  "event": "certificate.issued",
  "data": {
    "certificateId": "VbXUxI-Wdts",
    "recipientEmail": "layla@example.com",
    "templateName": "Workshop Certificate",
    "verifyUrl": "https://certtrigger.com/verify/VbXUxI-Wdts",
    "source": "batch"
  },
  "timestamp": "2026-07-25T12:00:00.000Z"
}

Contact lists

List your contact lists and push contacts into them from external systems — form tools, CRMs or automation platforms. New contacts are immediately available to batches and live event forms.

# your lists    GET /api/v1/lists

# add a contact
curl -X POST https://certtrigger.com/api/v1/lists/LIST_ID/contacts \
  -H "Authorization: Bearer ct_..." \
  -H "Content-Type: application/json" \
  -d '{ "data": { "Name": "Layla Hassan", "Email": "layla@example.com" } }'