Docs menu

Sending data in

Five ways to get data into Summarix. Pick based on where the data lives and who sends it.

MethodBest forAuth
REST APIYour servers, ETL jobs, nightly exportsSecret key
Public-key ingestWebsites, mobile apps, kiosks: events and form submissionsPublic key
Push URLZapier, Make, n8n, Power Automate, or any tool that can send an HTTP POSTURL token
App integrationsStripe, Shopify, HubSpot, Google Sheets and more, pulled on a scheduleThe app's own key
Database connectionsSQL Server, PostgreSQL, MySQLRead-only DB login

REST API #

Create a dataset from JSON rows (up to 5,000 per request) or upload a CSV/Excel file (up to 25 MB). Nested objects are flattened into columns such as customer.name.

curl https://api.summarix.co.za/v1/datasets \
  -H "Authorization: Bearer $SUMMARIX_SECRET_KEY" \
  -F name="Debtors ageing" -F [email protected]

Public-key ingest #

Collect rows straight from client code. Rows are added to the key's own dataset, and each request can carry 1 to 500 rows.

website snippet
<script>
  function summarix(row) {
    fetch("https://api.summarix.co.za/v1/ingest", {
      method: "POST",
      headers: { "X-Summarix-Key": "smx_pk_live_…", "Content-Type": "application/json" },
      body: JSON.stringify({ ...row, page: location.pathname, at: new Date().toISOString() }),
      keepalive: true,
    });
  }
  document.querySelector("#quote-form").addEventListener("submit", (e) => {
    summarix({ event: "quote_requested", product: e.target.product.value });
  });
</script>
Don't send personal information you don't need. Anything sent through a public key should be treated as low-trust input.

Push URL (automation tools) #

In Integrations → Add a source → Zapier · Make · n8n · Power Automate, you get a private URL likehttps://api.summarix.co.za/integrations/push/ipt_…. Anyone with the URL can send rows, so treat it like a password. You can generate a new URL at any time.

BodyEffect
{"invoice":"INV-1","amount":950}Append one row
[{…},{…}]Append many rows (up to 10,000 per request)
{"rows":[…],"mode":"replace"}Replace the whole dataset. Use this for daily full exports

Zapier

Add an action Webhooks by Zapier → POST, set Payload Type to JSON, paste the push URL, and map fields as data. Every trigger (a new Xero invoice, a Salesforce deal, a Typeform response…) becomes a row.

Make

Add an HTTP → Make a request module: method POST, the push URL, body type Raw, content type JSON, and your row as the request content.

n8n

Use an HTTP Request node: POST to the push URL, send body as JSON. To send many items in one call, aggregate them first and send {"rows": {{$json.items}}}.

Power Automate

Add an HTTP action: method POST, the push URL, header Content-Type: application/json, and the body from dynamic content. It works well with Dynamics 365, SharePoint lists and Excel Online triggers.

App integrations #

Built-in connectors pull data hourly, daily or weekly into a dataset that refreshes in place. Scheduled reports always use the latest data. Available: Google Sheets, CSV/Excel URLs, any REST/JSON API, Stripe, Shopify, WooCommerce, HubSpot, Pipedrive, Airtable, Notion, monday.com, Jira, Zendesk, Freshdesk, Mailchimp and GitHub. Each sync imports up to 200,000 rows.

Database connections #

In Dashboard → Data, connect SQL Server, PostgreSQL or MySQL with a read-only login. Queries must be a single SELECT. They run in a read-only transaction that is always rolled back, with a 10-second timeout and a 5,000-row cap. Only publicly reachable hosts are allowed. Ask us about an allowlist for private networks.