> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hotmart as a data source

> Bring data from Hotmart to Nekt.

Hotmart is a digital platform that enables creators to sell digital products and online courses. It provides a comprehensive ecosystem for digital product creators, including tools for hosting, payment processing, and managing student access.

## Configuring Hotmart as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Hotmart option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

You'll need your Hotmart API credentials for this connection. You can obtain these from the Hotmart Developer Portal (check [official docs](https://developers.hotmart.com/docs/pt-BR/start/app-auth/)). Once you have them, add the following credentials:

* **Client ID**: The client ID to authenticate against the API service.
* **Client secret**: The client secret to authenticate against the API service.
* **Token**: The basic token to authenticate against the API service. You should pass only the token value without the `Basic` prefix.
* **Members area subdomain**: The subdomain of your member's area. It can be extracted from your `hotmart.com/club/{subdomain}`.
* **Start date**: Records created or updated after the start date will be extracted from the source.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync - you can select all streams or pick specific ones that matter most to you. The available streams include sales history, subscriptions, products, and more.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure 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 (which will effectively contain the fetched data) 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 and make this process faster!
* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data - which is good if, for example, you want to keep every record ever fetched.
  * Full table: every time the extraction happens, we'll get the current state of the data - which is good if, for example, you don't want to have deleted data in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

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](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an **Additional [Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#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.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

# Streams and Fields

Below you'll find all available data streams from Hotmart and their corresponding fields:

<AccordionGroup>
  <Accordion title="Sales History">
    Stream containing historical sales data from your Hotmart products.

    **Key Fields:**

    | Field      | Type   | Description                                     |
    | :--------- | :----- | :---------------------------------------------- |
    | `id`       | String | Unique identifier for the sale (transaction ID) |
    | `product`  | Object | Product information                             |
    | `buyer`    | Object | Buyer information                               |
    | `producer` | Object | Producer information                            |
    | `purchase` | Object | Purchase details                                |
  </Accordion>

  <Accordion title="Subscriptions">
    Stream containing information about recurring subscriptions.

    **Key Fields:**

    | Field                | Type    | Description                              |
    | :------------------- | :------ | :--------------------------------------- |
    | `subscriber_code`    | String  | Code identifying the subscriber          |
    | `subscription_id`    | String  | Unique identifier for the subscription   |
    | `status`             | String  | Current status of the subscription       |
    | `accession_date`     | String  | Date when the subscription started       |
    | `end_accession_date` | String  | Date when the subscription ended         |
    | `request_date`       | String  | Date when the subscription was requested |
    | `date_next_charge`   | String  | Date of the next charge                  |
    | `trial`              | Boolean | Whether this is a trial subscription     |
    | `transaction`        | String  | Transaction identifier                   |
    | `plan`               | Object  | Subscription plan details                |
    | `product`            | Object  | Product information                      |
    | `price`              | Object  | Price information                        |
    | `subscriber`         | Object  | Subscriber information                   |
  </Accordion>

  <Accordion title="Subscription Transactions">
    Stream containing transaction history for subscriptions.

    **Key Fields:**

    | Field                        | Type    | Description                           |
    | :--------------------------- | :------ | :------------------------------------ |
    | `id`                         | String  | Unique identifier for the transaction |
    | `last_recurrency_start_date` | String  | Start date of the last recurrence     |
    | `has_unpaid_recurrency`      | Boolean | Whether there are unpaid recurrences  |
    | `product`                    | Object  | Product information                   |
    | `subscriber`                 | Object  | Subscriber information                |
    | `recurrency`                 | Object  | Recurrence information                |
    | `last_recurrency_number`     | Integer | Last recurrence number                |
    | `trial_info`                 | Object  | Trial information                     |
    | `purchase`                   | Object  | Purchase information                  |
    | `cancellation_date`          | String  | Cancellation date                     |
    | `is_paid_anticipation`       | Boolean | Whether payment was anticipated       |
    | `max_cycles`                 | Integer | Maximum number of cycles              |
    | `adoption_date`              | String  | Adoption date                         |
    | `subscriber_code`            | String  | Subscriber's code                     |
    | `date_next_charge`           | String  | Next charge date                      |
    | `is_paid_negotiation`        | Boolean | Whether payment was negotiated        |
    | `last_update`                | String  | Last update timestamp                 |
    | `billing_type`               | String  | Type of billing                       |
    | `producer`                   | Object  | Producer information                  |
    | `subscription_id`            | String  | Subscription identifier               |
    | `has_credit_card_change`     | Boolean | Whether credit card was changed       |
    | `plan`                       | Object  | Plan information                      |
    | `status`                     | String  | Overall status                        |
  </Accordion>

  <Accordion title="Sales Commission">
    Stream containing commission information for sales.

    **Key Fields:**

    | Field                           | Type   | Description                           |
    | :------------------------------ | :----- | :------------------------------------ |
    | `transaction`                   | String | Unique identifier for the transaction |
    | `product`                       | Object | Product information                   |
    | `exchange_rate_currency_payout` | Number | Exchange rate for currency payout     |
    | `commissions`                   | Array  | Array of commission information       |
  </Accordion>

  <Accordion title="Sales Participants">
    Stream containing information about participants in sales transactions.

    **Key Fields:**

    | Field         | Type   | Description                           |
    | :------------ | :----- | :------------------------------------ |
    | `transaction` | String | Unique identifier for the transaction |
    | `product`     | Object | Product information                   |
    | `users`       | Array  | Array of user information             |
  </Accordion>

  <Accordion title="Price Details">
    Stream containing detailed pricing information for products.

    **Key Fields:**

    | Field                  | Type   | Description                           |
    | :--------------------- | :----- | :------------------------------------ |
    | `transaction`          | String | Unique identifier for the transaction |
    | `product`              | Object | Product information                   |
    | `base`                 | Object | Base price information                |
    | `total`                | Object | Total price information               |
    | `vat`                  | Object | VAT information                       |
    | `fee`                  | Object | Fee information                       |
    | `coupon`               | Object | Coupon information                    |
    | `real_conversion_rate` | Number | Real currency conversion rate         |
  </Accordion>

  <Accordion title="Products">
    Stream containing information about your Hotmart products.

    **Key Fields:**

    | Field             | Type    | Description                           |
    | :---------------- | :------ | :------------------------------------ |
    | `id`              | String  | Unique identifier for the product     |
    | `name`            | String  | Name of the product                   |
    | `ucode`           | String  | Unique product code                   |
    | `status`          | String  | Current status of the product         |
    | `created_at`      | String  | Creation date timestamp               |
    | `format`          | String  | Product format                        |
    | `is_subscription` | Boolean | Whether the product is a subscription |
    | `warranty_period` | Integer | Warranty period in days               |
  </Accordion>

  <Accordion title="Students">
    Stream containing information about students enrolled in your products.

    **Key Fields:**

    | Field               | Type    | Description                        |
    | :------------------ | :------ | :--------------------------------- |
    | `user_id`           | String  | Unique identifier for the student  |
    | `engagement`        | String  | Student's engagement level         |
    | `name`              | String  | Student's name                     |
    | `email`             | String  | Student's email                    |
    | `last_access_date`  | String  | Last access timestamp              |
    | `role`              | String  | Student's role                     |
    | `first_access_date` | String  | First access timestamp             |
    | `locale`            | String  | Student's locale                   |
    | `plus_access`       | Boolean | Plus access status                 |
    | `progress`          | Object  | Progress information               |
    | `status`            | String  | Current status                     |
    | `access_count`      | Integer | Number of accesses                 |
    | `is_deletable`      | Boolean | Whether the student can be deleted |
    | `class_id`          | String  | Class identifier                   |
    | `type`              | String  | Student type                       |
  </Accordion>
</AccordionGroup>

## Implementation Notes

### API Pagination & Limits

* **Windowed Pagination**: To prevent timeouts and improve reliability when extracting large amounts of historical data, the `Sales History` and `Price Details` streams utilize windowed pagination. The connector requests data in yearly (12-month) blocks starting from your configured `Start Date` up to the current date.

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

<Card title="Download Hotmart skills file" icon="wand-magic-sparkles" href="/sources/hotmart.md">
  Hotmart connector documentation as plain markdown, for use in AI agent contexts.
</Card>
