Data export
Push your team's new notes to your own endpoint every day or week — ready to feed an AI assistant, warehouse, or analytics tool.
CoNote brings every team's events together in one timeline. Data export sends that same stream back out: point your logbook at an HTTPS endpoint and CoNote pushes your new notes to it on a daily or weekly schedule, automatically. It's the bridge between your logbook and your own AI assistant, data warehouse, or analytics stack.
Data export is available on the Pro and Enterprise plans. Set it up under Settings → Export. Only owners and admins can manage the feed.

How it works
On each tick — every day, or weekly on the day you choose — CoNote gathers every note that landed on your timeline since the last delivery and POSTs them to your endpoint as a single signed JSON request. A few things worth knowing:
- It's incremental. Each delivery contains only what's new since the last successful one — never your whole history. The feed starts from the day you turn it on, so notes logged before that stay in CoNote.
- Daily or weekly. Choose the cadence; weekly also lets you pick the weekday. Either way, delivery goes out at 9am in your team's timezone.
- You choose the scope. Leave categories empty to send everything, or pick a few to narrow the feed to just those.
Add your endpoint
Enter the HTTPS URL CoNote should POST to, set the frequency to Daily or Weekly, and — for weekly — pick the send day.
Choose what to send
Leave Categories empty for everything, or select the categories you want pushed.
Verify the signature
Copy the signing secret and use it on your endpoint to confirm each request really came from CoNote (see below).
The payload
Each delivery is a JSON body like this:
{
"team": { "id": "team_123", "name": "Lumen Analytics" },
"period": { "from": "2026-06-09T07:00:00.000Z", "to": "2026-06-16T07:00:00.000Z" },
"count": 2,
"truncated": false,
"notes": [
{
"id": "note_abc",
"title": "Deployed checkout v3.4.0 to production (main → 9f2a1c4)",
"description": null,
"eventDate": "2026-06-15T13:00:00.000Z",
"category": "deployment",
"tags": ["release"],
"source": "INTEGRATION",
"sourceLabel": "GitHub",
"author": null,
"createdAt": "2026-06-15T13:01:22.000Z"
}
]
}
If a single period ever exceeds the per-delivery limit, truncated is true and the rest follows
in the next delivery — nothing is dropped.
Verifying the signature
Every request carries an x-conote-signature header: sha256= followed by an HMAC of the exact
request body, keyed by your signing secret. Recompute it on your side and compare before trusting
the payload:
import crypto from 'node:crypto';
function isFromCoNote(rawBody, header, secret) {
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}
Keep your signing secret private — it's the only thing that proves a request came from CoNote. If it leaks, rotate it from Settings → Export; the old secret stops working immediately.
When a delivery fails
If your endpoint is unreachable or returns an error, CoNote records it and shows the reason under Settings → Export. The cursor doesn't move on a failure, so the same notes are retried on the next run — you won't lose a week's events to a brief outage.
Available on the Pro and Enterprise plans. Pair it with an AI assistant to ask questions like "what changed in the two weeks before conversion dropped?" against your own copy of the feed.