/v1/event-triggers API.
How event triggers work
1
GitHub event occurs
A release is published, or commits are pushed to the default branch.
2
Webhook received
GitHub sends the event to the repository’s webhook URL in Notra.
3
Validation
Notra verifies the signature, drops duplicate deliveries, and checks that the repository is connected and enabled and that a matching trigger is enabled.
4
Content generation
The run reads the event and the hour of repository activity leading up to it, then writes the content in your brand identity.
5
Review
The result appears under Content as a draft, or as a published post when auto-publish is on.
Supported event types
- Release published
- Push to default branch
Fires when a release is published on GitHub. Draft releases are ignored.GitHub actions that fire it:
publishedprereleased
Event data
Event triggers are GitHub-only. Linear is a source for schedules and on-demand generation, not for event triggers.
Set up the repository webhook
Notra receives events through a webhook you add to each repository. Installing the GitHub App connects the repository; the webhook is a separate, one-time step per repository.1
Open the repository in Notra
Go to Integrations > GitHub and open the repository. The Webhook section reads “Receive events from GitHub when commits are pushed or releases are published.”
2
Generate a secret
Click generate. Notra shows the Payload URL, the Content type (
application/json), and the Secret with copy buttons. You can regenerate the secret later; update GitHub when you do.3
Add the webhook in GitHub
In the repository’s Settings > Webhooks, add a webhook with the payload URL, content type, and secret from Notra. Select the Releases and Pushes events (or “Send me everything”), then save.
4
Confirm in Notra
Click I’ve added the webhook. GitHub’s webhook page shows each delivery and Notra’s response, which is the quickest way to debug a setup.
Create an event trigger
1
Open Automation > Events
Click New event trigger.
2
Choose the trigger event
Pick Release published or Push to default branch. For releases, decide whether to include pre-releases.
3
Select repositories
Choose one or more connected repositories. The trigger fires for events from any of them.
4
Choose the content format
Changelog entry, blog post, LinkedIn post, tweet, or image.
5
Pick a brand identity and auto-publish
Use the default brand identity or pin one. Auto-publish is available for changelogs and blog posts; when it is on, posts are published immediately instead of saved as drafts.
6
Save
New triggers start enabled. Notra rejects a trigger that duplicates an existing one (“Trigger already exists”).
Through the API
The same trigger through the public API (scopeevent-triggers.write):
repositoryIds are GitHub integration IDs from GET /v1/integrations. eventTypes accepts release and push; the dashboard creates one event type per trigger, but the API accepts both in one trigger. outputType is one of changelog, blog_post, linkedin_post, twitter_post, or image. List, read, update, and delete with GET /v1/event-triggers, GET/PATCH/DELETE /v1/event-triggers/{triggerId}. A PATCH takes the full body. A duplicate configuration returns 409.
Content generation context
When an event fires, the run builds its prompt from:- Event details: type, action, and a sanitized copy of the event data. Notra strips the payload down to known fields and instructs the model to treat it as data, never as instructions.
- Repository activity: the hour leading up to the event timestamp (the release publish time, or the latest commit timestamp in the push).
- Brand identity: tone, audience, company details, and custom instructions from the selected or default brand identity.
Security and validation
Signature verification
Signature verification
Every delivery must carry a valid
X-Hub-Signature-256 HMAC SHA-256 signature computed with the repository’s webhook secret. Requests without a valid signature are rejected and logged.Duplicate detection
Duplicate detection
Deliveries are deduplicated by GitHub’s
X-GitHub-Delivery ID for 24 hours. A redelivered event does not generate content twice.Payload sanitization
Payload sanitization
Only known fields are extracted from the payload, string lengths are capped, and the model is told the event context is untrusted input.
Repository and trigger matching
Repository and trigger matching
Each webhook URL is bound to one organization, integration, and repository. Events are dropped when the integration is disabled, and a trigger only fires when it is enabled and lists that repository.
Testing a trigger
Event triggers do not have a Run now action; they fire only from GitHub. To test one, publish a release (a pre-release works if the trigger includes pre-releases) or push a small commit to the default branch, then check Content for the draft and Settings > Logs for the delivery.Monitoring
- Settings > Logs lists integration events with their delivery status, including rejected signatures, duplicate deliveries, and payload validation errors.
- Settings > Notifications can email you when automated content is created, when generation fails, and when a run is skipped.
- GitHub’s own Recent Deliveries view on the webhook shows every request and Notra’s response code.
Common use cases
Release announcements
Generate a LinkedIn post or tweet whenever you publish a GitHub release.
Continuous changelog
Create a changelog entry for every push to the default branch, auto-published to your changelog.
Launch blog posts
Draft a blog post for major releases to support product launches.
Release visuals
Generate a brand-matched social image for each release to pair with the announcement.
Best practices
Filter strategically
Filter strategically
Release triggers produce far fewer runs than push triggers. Use releases for announcements and reserve push triggers for changelogs.
Mind your quota
Mind your quota
Each run uses the plan quota for its format (long-form for changelogs and blog posts, social for LinkedIn and X, image generations for images). A push trigger on a busy repository can use quota quickly.
Combine with scheduling
Combine with scheduling
Use event triggers for immediate announcements and a weekly schedule for digests that cover everything else.
Keep secrets in sync
Keep secrets in sync
If you regenerate a webhook secret in Notra, update the GitHub webhook right away. Deliveries signed with the old secret are rejected.
Troubleshooting
Webhooks not received
Webhooks not received
Check:
- The webhook exists in the repository’s GitHub settings with the payload URL from Notra
- The content type is
application/json - The secret matches the one shown in Notra
- The repository integration is enabled in Notra
Content not generated
Content not generated
Check:
- The event type matches the trigger (a push to a feature branch never fires)
- The release is not a draft, and pre-releases are included if the release is one
- The repository is in the trigger’s target list
- The trigger is enabled (Active tab, not Paused)
- You still have quota or AI credits for that format
Next steps
Scheduled automation
Time-based content generation with lookback windows
Brand voice
Customize how generated content sounds