Everything you need to make it work.
Step-by-step setup, integration specifics, and the full REST API.
Getting started
Quickstart
Get your first report sent in under 10 minutes. Sign up, connect one integration, add a client, paste a paragraph of your past reporting voice, and hit send. The first report leaves your domain Monday at 9am.
Setting up your agency workspace
Settings → Agency Profile. Add your brand name, logo, sending domain (e.g. reports@youragency.com), and footer text. These show up on every report and the client portal — there is no SendReport branding anywhere your clients can see.
Adding your first client
Clients → Add client. Enter their company name, the contact email that should receive reports, and OAuth into the platforms they advertise on. You can do this all at once or stage it.
Generating your first report
Reports → Generate. Pick the client, date range, and cadence. The AI summary writes from the actual data — if a source is missing, the send is held and you get an email instead.
Integrations
Google Ads
OAuth-based. We pull spend, clicks, impressions, conversions, CTR, ROAS. Multiple ad accounts per client are supported on every plan — no upgrade required.
Meta Ads
Authorize the Meta Business account that owns your client's ad accounts. Facebook and Instagram campaigns appear side by side. Multiple ad accounts per client supported.
GA4
Authorize the Google account with access to the GA4 property. We pull sessions, users, bounce rate, conversion events, and traffic-source breakdowns. Custom events supported.
SEMrush
Connect your SEMrush API key. We pull rankings, backlink growth, organic traffic, and competitor data. Keyword tracking is included — no add-on fee.
Shopify
Direct Shopify API connection, not via a third-party connector. We pull revenue, orders, conversion rate, AOV, top products. Multi-store supported per client.
Reports
AI voice conditioning
Paste a paragraph of your past reports during setup. The model is conditioned on your phrasing, your opinions, your structure. You can also override per-client if a specific account needs a different tone.
White-label branding
Upload your logo, set brand colors, configure a custom sending domain (reports.youragency.com). Reports look like you built them from scratch. No "Powered by SendReport" anywhere.
Auto-send schedules
Per-client cadence — weekly, biweekly, monthly, quarterly, or a custom cron expression. Once configured, reports send forever without you opening the dashboard.
Review-before-send
Per-client toggle. When on, you get the draft via email Sunday evening. Approve in one click or edit inline. When off, reports send automatically.
Fail-quiet behaviour
If a data source returns null, has a broken pixel, or fails OAuth, we hold the send and email you instead of your client. No "performance was strong" on a broken week.
API
API authentication
All API requests require a Bearer token. Generate keys at Settings → API.
curl https://api.sendreport.app/v1/reports \ -H "Authorization: Bearer YOUR_API_KEY"
Endpoints
REST endpoints for clients, reports, integrations, and schedules. All responses JSON.
GET /v1/clients POST /v1/clients GET /v1/reports POST /v1/reports/generate GET /v1/schedules
Webhooks
Subscribe to report.generated, report.sent, integration.failed, integration.reconnected events.
{
"event": "report.sent",
"report_id": "rep_xyz",
"client_id": "cli_xyz",
"sent_at": "2026-05-23T09:02:00Z"
}Rate limits
Trial: 100 req/hr. Solo: 500 req/hr. Agency: 2,000 req/hr. Scale: 10,000 req/hr. 429 response if exceeded; rate-limit headers on every response.
Need help? Talk to a human →