Skip to main content
Martz is a Brazilian retention CRM for e-commerce. It ingests customers, orders, products and abandoned carts from your store’s own platform (Nuvemshop, Shopify, Tray, VTEX, Bling, Omie and others), segments the customer base into groups, and runs WhatsApp, e-mail and SMS campaigns against it. This connector brings what Martz has already ingested and computed into your Nekt Catalog — including the message-by-message log of every campaign and the coupons those campaigns handed out.

Before you start

You need a public API key for your Martz store. You generate it yourself, in the Martz panel:
1

Open the access keys page

In painel.martz.com.br, go to Configurações » Chaves de Acesso.
2

Find the public API key

Look at the Chave da API pública box. If a key is already there, copy it.
3

Create one if there is none

If the box says Nenhuma chave criada, click gerar nova chave.
Generating a new key immediately stops the previous one working. If other integrations already use your Martz API key, only regenerate it if you are ready to update them all at the same time.
The key does not expire and is tied to one store, so one Nekt source reads one Martz store.

Configuring Martz as a Source

In the Sources tab, click the “Add source” button in the top-right corner, then select Martz from the list of connectors. Click Next and add your access details.

1. Add account access

The following configuration fields are available:
  • API Key: The public API key you copied from the Martz panel. It is sent as the X-API-KEY header on every request.
  • Initial sync date (advanced): The earliest scheduled send date read by the Campaign activities table on the first run. Later runs continue from where the previous one stopped. Leave it empty to read your full history. It does not affect the other tables — see Sync types below.
  • Lookback window (days) (advanced): How many days before the last sync the Campaign activities table re-reads on every run. Defaults to 1.
  • Page size (advanced): Records requested per page. Martz caps this at 100, which is also the default and the fastest option.
  • Requests per minute (advanced): Maximum number of API calls per minute this source makes. Defaults to 120.
  • API URL (advanced): Overrides the Martz API address. Only change it if Martz told you to use a different host.
After configuring access, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the ones relevant to your analysis.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how data should appear in your Catalog, including layer, table naming, and sync type.
  • Layer: Select the destination layer where extracted tables will be created.
  • Folder: A folder can be created inside the selected layer to group all tables from this source.
  • Table name: Use the suggested name or customize it. You can also apply a prefix to all tables at once.
  • Sync Type: Choose between INCREMENTAL and FULL_TABLE. See Sync types — only Campaign activities supports INCREMENTAL.
When you’re done, click Next.

4. Configure data source

Add a clear description for this source so your team can identify it easily, not exceeding 140 characters. To define your Trigger, choose how often data should be extracted (for example, daily, weekly, or at fixed times). Optionally, configure additional settings:
  • Delta Log Retention, which controls how long old table states are kept. Learn more here.
  • Additional Full Sync, to periodically complement incremental runs with a complete refresh.
When you are ready, click Next to finalize setup.

5. Check your new source

You can view your new source on the Sources page. If needed, trigger a run manually from the source actions.
To see data in the Catalog, at least one source run must complete successfully.

Sync types

Campaign activities is the only table that can sync incrementally, and it is also the largest — it holds one row per message sent to one customer. Its endpoint is the only one in the Martz API that accepts a date filter, so every run reads only what was scheduled since the last one, plus the lookback window. Every other table is read in full on every run. The Martz API publishes no “modified since” filter on any other endpoint, so there is no reliable way to ask it for only what changed. Reading them in full is what guarantees the Catalog matches Martz; a full read also self-corrects, so a table never drifts. In practice this matters most for Customers and Orders, the two tables that grow with the store. If they are large, prefer a daily trigger over an hourly one.

Good to know

  • Money is in cents. subtotal, freight, discount, total, price and the coupon values are whole numbers in the smallest unit of your currency — 19000 is R$ 190,00. Divide by 100 in a Query when you present them.
  • Two views of an order’s status. status is Martz’s normalised status; raw_status is the exact wording your own e-commerce platform used. Use raw_status when a report has to agree with your back office.
  • Every commerce record keeps its origin. integration_name and integration_id carry the platform the record came from and its identifier there, so you can join Martz data back to your store’s own exports.
  • Order lines and cart lines are JSON text. orders.products and abandoned_carts.products hold the line items as a JSON array. Parse them in a Query or Notebook when you need one row per item.
  • Leads and buyers share one table. Martz calls a contact with no paid order a lead. Both are in Customers; order_amount equal to zero is what marks a lead.
  • Deleted coupons are still returned. Rows in Coupons carrying a deleted_at value are ones Martz removed. Filter them out if your report should ignore them.
  • Campaign activities can be scheduled into the future. scheduled_to is when a message is due to go out, so rows with dates ahead of today are normal.
  • A table your plan does not include is skipped, not failed. If Martz refuses one of the endpoints for your store, that table is left untouched and the run reports it — every other table still syncs.
  • One key, one store. The key is issued per store, so syncing two Martz stores means two sources in Nekt.

Streams and Fields

Available streams

Fields by stream

Below you’ll find all available data streams from Martz and their corresponding fields: