Skip to main content
Cakto is a Brazilian checkout and payments platform for digital products. It handles product pages, checkouts, order bumps, upsells, affiliate commissions and recurring subscriptions, and this source brings that sales data - orders, customers, products, offers and subscriptions - into your Lakehouse.

1. Add your Cakto access

1

Create an API key in Cakto

In the Cakto panel, go to Integracoes and then Cakto API, and click Criar Chave de API.Give the key a descriptive name and select the scopes it needs. Nekt only reads data, so the key needs the read scope plus the scope of each resource you want to sync:
Cakto shows the Client Secret only once, at the moment the key is created. Copy it before closing the dialog - if it is lost, you have to create a new key.
2

Add the source in Nekt

In the Sources tab, click Add source, select Cakto from the list of connectors and click Next. You’ll be prompted to add your access:
  • Client ID: the Client ID of the API key you created.
  • Client Secret: the Client Secret of the same key.
  • Initial sync date (optional): the earliest date to read for the incremental streams, orders and the webhook event history. Defaults to the beginning of the year two years ago.
  • Order update lookback (days) (optional): how far before the last synced order the update filter reaches back. Defaults to 30 days. See the note below.
Click Next.
Why the order lookback exists. Cakto’s order endpoint lets you filter by last update but does not return an update timestamp on the record itself, so Nekt bookmarks the creation date and reaches the update filter back by the lookback window. That window is what makes a refund or a chargeback recorded against an older order show up in a later run. The default of 30 days covers the period in which most refunds happen; raise it if you issue refunds later than that.

2. Select your Cakto streams

Choose which streams you want to sync. For faster extractions, select only the streams relevant to your analysis.
Tip: The stream can be found more easily by typing its name.
subscription_billing_cycles is read one subscription at a time, so it costs one request per subscription on every run. Cakto allows 5,000 requests per hour, so select it only if you need the recurring-billing history. subscription_billing_cycle_attempts comes from the same responses and adds no requests of its own.
Click Next.

3. Configure your Cakto data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once.
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE. Read more about Sync Types here.
Click Next.

4. Configure your Cakto data source

  1. Describe your data source for easy identification within your organization.
  2. To define your Trigger, consider how often you want data to be extracted from this source.
  3. Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Check your new source

Click Next to finalize the setup. You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from Cakto and their corresponding fields. Fields described as JSON hold a serialized object or array in a text column - query them with your warehouse’s JSON functions.
Every purchase made through your checkouts, with the product, the buyer, the traffic source and the commission split of each sale.Replicated incrementally on created_at.Fields:
  • id - Unique identifier of the order in Cakto.
  • ref_id - Short reference code of the order, the one shown to the buyer.
  • status - Current status of the order: processing, authorized, paid, refused, refunded, chargedback, waiting_payment, canceled or in_protest.
  • type - Kind of product bought: ‘unique’ for one-off sales, ‘subscription’.
  • offer_type - Where in the funnel the offer was bought: main, upsell, downsell or orderbump.
  • base_amount - Value of the order before discounts and instalment fees.
  • discount - Discount applied to the order, when a coupon was used.
  • amount - Total value of the order after discounts and fees, as charged.
  • fees - Total fees Cakto charged on the order.
  • coupon_code - Code of the discount coupon used in the purchase, if any.
  • coupon - Full coupon applied to the purchase - code, discount and validity window (JSON object).
  • reason - Reason the payment was refused, as reported by the acquirer.
  • refund_reason - Reason given when the order was refunded.
  • product_id - Identifier of the product bought in this order.
  • product_name - Name of the product bought.
  • product_type - Sale model of the product: ‘unique’ or ‘subscription’.
  • product_status - Status of the product at the time of reading: active, blocked or deleted.
  • product_price - List price of the product, which may differ from the amount paid.
  • product_category_id - Identifier of the category the product belongs to.
  • product_category_name - Name of the category the product belongs to.
  • checkout - Identifier of the checkout page where the purchase was made.
  • checkout_url - URL of the checkout page where the purchase was made.
  • subscription - Identifier of the subscription this order belongs to, when recurring.
  • subscription_period - Which billing period of the subscription this order paid for.
  • installments - Number of instalments the buyer split the payment into.
  • payment_method - How the order was paid: credit_card, pix, boleto, picpay and so on.
  • created_at - When the order was created. Used as the incremental replication key; note that the records themselves are filtered by their last update, so an older order can reappear after a refund.
  • due_date - When the payment is scheduled to be processed (subscriptions).
  • paid_at - When the payment was confirmed.
  • release_date - Estimated date the commissions of this order become available.
  • refunded_at - When the order was refunded.
  • chargedback_at - When a chargeback was opened against the order.
  • canceled_at - When the order was canceled, usually for subscriptions.
  • customer_name - Name of the buyer.
  • customer_email - Email of the buyer. Only returned when the product shares buyer contact details with this account.
  • customer_phone - Phone number of the buyer, when contact details are shared.
  • customer_doc_type - Kind of Brazilian tax document of the buyer: cpf or cnpj.
  • customer_doc_number - Tax document number of the buyer, when contact details are shared.
  • customer_birth_date - Date of birth of the buyer, when informed at checkout.
  • address_country - Country of the buyer’s address, as an ISO 3166-1 alpha-2 code.
  • address_state - State of the buyer’s address, as an ISO 3166-2 code (for example SP).
  • address_city - City of the buyer’s address.
  • address_zipcode - Postal code (CEP) of the buyer’s address.
  • address_street - Street of the buyer’s address.
  • address_neighborhood - Neighbourhood of the buyer’s address.
  • address_complement - Additional address information, such as apartment or reference point.
  • address_number - Street number of the buyer’s address.
  • shipping - Shipping details of the order, for products that are delivered physically (JSON object).
  • commissioned_users - Producers, co-producers and affiliates who earned from this order - id and email of each (JSON array).
  • commissions - Commission split of the order: user, role, percentage and value for each participant (JSON array).
  • utm_source - Traffic source recorded at checkout, such as google or instagram.
  • utm_medium - Traffic medium recorded at checkout, such as cpc, email or social.
  • utm_campaign - Campaign name recorded at checkout.
  • utm_term - Campaign term recorded at checkout.
  • utm_content - Campaign content recorded at checkout, such as the creative used.
  • sck - Free-form tracking parameter the seller can attach to a checkout link.
Buyers who have completed at least one paid order. Cakto masks the phone number and the tax document on this endpoint; the unmasked values, when the product shares buyer contact details with your account, are on the order record.Fields:
  • id - Unique identifier of the customer.
  • name - Full name of the customer.
  • email - Email address of the customer.
  • birth_date - Date of birth of the customer, when informed at checkout.
  • phone - Phone number of the customer, partially masked by Cakto.
  • doc_type - Kind of Brazilian tax document of the customer: cpf or cnpj.
  • doc_number - Tax document number of the customer, partially masked by Cakto.
The products you sell. Summary view: the per-product settings (affiliation rules, upsell pages, tracking pixels) are not synced, because reading them would cost one request per product on every run.Fields:
  • id - Unique identifier of the product.
  • name - Name of the product.
  • description - Description of the product shown to buyers.
  • price - List price of the product, in Brazilian reais.
  • type - Sale model of the product: ‘unique’ for one-off, ‘subscription’.
  • status - Current status of the product: active, blocked or deleted.
  • image - URL of the product image.
  • content_deliveries - How the product content is delivered to the buyer, such as the Cakto members area, email access, Telegram or Discord.
  • email_access_link - Link emailed to the buyer to access the content after purchase.
  • sales_page - URL of the product’s sales page.
  • payment_methods - Payment methods the product accepts at checkout.
  • category_id - Identifier of the category the product belongs to.
  • category_name - Name of the category the product belongs to.
The price points configured for each product: the default offer plus any promotional price, annual plan or upsell.Fields:
  • id - Unique identifier of the offer.
  • name - Name of the offer, shown at checkout and in the Cakto panel.
  • image - URL of the image used for the offer.
  • price - Price charged by this offer.
  • units - How many units of the product the buyer gets with this offer.
  • default - Whether this is the product’s default offer.
  • product - Identifier of the product this offer belongs to.
  • status - Current status of the offer: active, disabled or deleted.
  • type - Payment model of the offer: ‘unique’ or ‘subscription’.
  • interval_type - Unit of the access period granted by a one-off offer: day, week, month or year.
  • interval - How many interval units of access the offer grants.
  • recurrence_period - Days between charges, for subscription offers.
  • quantity_recurrences - How many charges the subscription makes; -1 means indefinitely.
  • trial_days - Free trial days granted before the first charge.
  • max_retries - How many times a failed subscription charge is retried.
  • retry_interval - Days between retries of a failed subscription charge.
The checkout pages of each product, with their visit counter. Read one product at a time.Fields:
  • product_id - Identifier of the product this checkout page belongs to.
  • id - Unique identifier of the checkout page.
  • name - Name given to the checkout page.
  • default - Whether this is the product’s default checkout page.
  • visits - Number of visits the checkout page has received.
  • created_at - When the checkout was created.
  • updated_at - When the checkout was last changed.
The complementary offers displayed on a product’s checkout. Read one product at a time.Fields:
  • owner_product_id - Identifier of the product whose checkout displays this order bump.
  • id - Unique identifier of the order bump.
  • product - Identifier of the product offered as the order bump.
  • installments - Number of instalments allowed for the offered product.
  • reference_price - Crossed-out reference price displayed next to the order bump.
  • offer_id - Identifier of the offer sold through this order bump.
  • offer_name - Name of the offer sold.
  • offer_price - Price charged by the offer sold.
  • offer_type - Payment model of the offer sold: ‘unique’ or ‘subscription’.
  • offer_status - Status of the offer sold: active, disabled or deleted.
  • cta - Text of the call-to-action button of the order bump.
  • title - Title displayed on the order bump.
  • description - Descriptive copy displayed on the order bump.
  • position - Position of the order bump in the checkout, lowest shown first.
  • image - URL of the order bump image.
  • show_image - Whether the image is displayed alongside the order bump.
Your recurring subscriptions in every state: active, paused, canceled, expired and trial.Fields:
  • id - Unique identifier of the subscription.
  • status - Current state of the subscription: active, inactive, canceled, expired, paused or trial.
  • current_period - Billing period the subscription is currently in.
  • recurrence_period - Days between charges of this subscription.
  • quantity_recurrences - How many charges are configured in total; -1 means indefinitely.
  • trial_days - Free trial days granted before the first charge.
  • max_retries - How many times a failed charge is retried before giving up.
  • retry_interval - Days between retries of a failed charge.
  • amount - Amount charged on each recurrence.
  • paid_payments_quantity - How many charges of this subscription have been paid so far.
  • retention - How long the subscription has stayed active, as reported by Cakto.
  • product_id - Identifier of the product the subscription gives access to.
  • product_name - Name of the subscribed product.
  • offer_id - Identifier of the offer (price point) the subscription was sold on.
  • offer_name - Name of the offer subscribed to.
  • offer_price - Price configured on the offer the subscription was sold on.
  • customer_id - Identifier of the subscriber.
  • customer_name - Name of the subscriber.
  • customer_email - Email of the subscriber.
  • customer_phone - Phone number of the subscriber, when shared with this account.
  • customer_doc_number - Tax document of the subscriber, when shared with this account.
  • parent_order_id - Identifier of the order that originated the subscription.
  • parent_order_ref_id - Short reference code of the order that originated the subscription.
  • payment_method - Payment method used to charge the subscription. A plain method name such as credit_card, or a JSON object with the card details when Cakto returns them.
  • orders - Orders generated by this subscription so far (JSON array).
  • next_payment_date - Estimated date of the next charge.
  • created_at - When the subscription was created.
  • updated_at - When the subscription was last changed.
  • canceled_at - When the subscription was canceled, if it was.
The billing cycles of each subscription: what was charged, when it was due and how it ended. Read one subscription at a time, so this stream is the most request-hungry of the connector.Fields:
  • subscription_id - Identifier of the subscription this billing cycle belongs to.
  • id - Unique identifier of the billing cycle.
  • cycle_number - Sequential number of the cycle within the subscription.
  • due_date - When the cycle was due to be paid.
  • amount - Amount charged in this cycle.
  • status - Outcome of the cycle, such as paid or pending.
  • total_attempts - How many charge attempts were made for this cycle.
  • completed_at - When the cycle was settled.
  • created_at - When the cycle was created.
The individual charge attempts of each billing cycle, with the reason a charge failed. Extracted from the billing cycle response, so selecting it costs no extra requests.Fields:
  • subscription_id - Identifier of the subscription this charge attempt belongs to.
  • billing_cycle_id - Identifier of the billing cycle this charge attempt belongs to.
  • id - Unique identifier of the charge attempt.
  • attempt_number - Sequential number of the attempt within its billing cycle.
  • amount - Amount the attempt tried to charge.
  • result - Outcome of the attempt: success or failure.
  • failure_reason - Why the charge failed, as reported by the payment provider.
  • scheduled_for - When the attempt was scheduled to run.
  • started_at - When the attempt started.
  • completed_at - When the attempt finished.
  • created_at - When the attempt was recorded.
The webhooks configured on your account to receive Cakto events. The signing secret of each webhook is never synced.Fields:
  • id - Unique identifier of the webhook.
  • name - Name given to the webhook.
  • status - State of the webhook: active, disabled or waiting_config.
  • url - Destination URL events are delivered to.
  • products - Products whose events trigger this webhook (JSON array).
  • events - Events subscribed by this webhook (JSON array).
  • created_at - When the webhook was created.
  • updated_at - When the webhook configuration was last changed.
The delivery history of your webhooks: which event was sent, to which URL, what the destination answered and how long it took. The signing secret is stripped from the payload before it reaches your Lakehouse.Replicated incrementally on dispatched_at.Fields:
  • id - Unique identifier of this delivery in the webhook history.
  • app_id - Identifier of the webhook that produced this delivery.
  • app_name - Name of the webhook.
  • app_status - State of the webhook: active, disabled or waiting_config.
  • url - Destination URL this delivery was sent to.
  • event_id - Event that triggered the delivery, such as purchase_approved, refund, chargeback or subscription_canceled.
  • event_name - Human-readable name of the event that triggered the delivery.
  • event_status - HTTP status code returned by the destination. 2xx means the delivery was accepted; anything else means the receiver rejected or failed to handle it.
  • response_time - How long the destination took to answer, in milliseconds.
  • payload - Body Cakto sent to the destination, with the webhook signing secret removed (JSON object).
  • response - Body the destination answered with (JSON object).
  • steps - Steps Cakto went through while delivering the event (JSON).
  • scheduled_at - When the delivery was queued.
  • dispatched_at - When the HTTP request was actually sent. Used as the incremental replication key.
  • sent_at - Deprecated by Cakto, kept for backwards compatibility. Use scheduled_at and dispatched_at instead.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!