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.
The complete guide to mastering CertTrigger.
In a rush? Here is how to send your first batch in under 2 minutes:
{{Field}} button to place placeholders like {{Name}} and {{Date}} on your design.Our drag-and-drop builder gives you pixel-perfect control over your certificates.
{{...}} becomes a variable. You can change their font, color, and size just like normal text.Data is the fuel for your certificates. We support flexible data ingestion methods.
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.
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.
The Job Runner is where the magic happens. It merges your Template with your Data.
Always check the preview. It renders the first 5 records of your data onto the template so you can catch alignment issues.
We use high-reputation IPs to ensure delivery. You can customize the "Sender Name" in your profile settings.
You can use `{{Name}}` etc. in the Email Subject and Body too, not just the certificate!
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.
For deep integration, use the REST API — one POST issues a verifiable certificate.
Authorization: Bearer ct_... on every request.POST /api/v1/hooks.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.
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.
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.
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.
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: https://certtrigger.com/api/v1 Header: Authorization: Bearer ct_your_api_key
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"
}Returns status (valid / revoked / expired), recipient, view count and links for a certificate you issued.
Lists your templates (id, name, category) for integration pickers.
| Code | Meaning |
|---|---|
| API_KEY_REQUIRED | Missing/malformed Authorization header |
| API_KEY_INVALID | Unknown or disabled key |
| FEATURE_NOT_IN_PLAN | Your plan does not include API access |
| VALIDATION_ERROR | Request body failed validation (details included) |
| NOT_FOUND | Template or certificate not found |
| 429 | Rate limit exceeded — retry after the window resets |
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.
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/:idDelivery 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"
}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" } }'