The connector only reads data. It never creates, changes or deletes anything in Waid.
Configuring Waid as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Waid option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
Every request to the Waid API carries two credentials: the API Key, which identifies your platform, and an access token, which identifies an administrator. You can get both in the Waid admin panel: click your name at the bottom of the left sidebar, choose Credenciais API and select an administrator. Only administrators, subadministrators and the developer profile can see this screen. The following configurations are available:- Authentication Method: How the connector signs in.
- Administrator e-mail and password (recommended): the connector signs in as a Waid administrator on every sync and asks Waid for a token that lasts only a few hours. We recommend creating a dedicated administrator for Nekt.
- Access Token (expires every 7 days): paste the token from Credenciais API. You will need to replace it every week.
- API Key: The API Key shown in Credenciais API. It is the same for every administrator and does not expire.
- Administrator E-mail and Administrator Password: The administrator the connector signs in as (e-mail and password method). Use an administrator whose access is not restricted to some groups: the connector reads what this user can see. Users who only sign in with Google must set a password first, using Forgot my password on the Waid sign-in screen.
- Access Token: The token from Credenciais API (Access Token method).
Sign-in with e-mail and password is confirmed by Nekt on your first sync. To make it smooth:
- Create a dedicated administrator for Nekt in Waid, with an e-mail address and a password. Users who only sign in with Google, or who have two-step verification turned on, cannot be used by an automated connection.
- Fill in that e-mail (not a CPF) and password, and run the source once.
- If the sign-in fails, the run log says why (wrong e-mail or password, two-step verification, CPF instead of e-mail). You can also switch to the Access Token method, keeping in mind that it must be replaced every 7 days.
- Start Date: (Optional) Earliest date to read for the streams filtered by date: members and group members (last update), lesson completions, member accesses and sales (purchase day). Leave empty to extract the whole history.
- Lookback Days: (Default: 1, minimum 1) Each sync also re-reads this many days before the previous sync, for members, group members, lesson completions and member accesses.
- Sales Lookback Days: (Default: 60, minimum 1) Waid only filters sales by purchase day, while a payment keeps changing after the purchase (confirmed, refunded, charged back). Each sync re-reads the purchases of this many past days, and also every refunded, cancelled or disputed payment bought since the Start Date (at most 400 days back).
- Max Requests per Minute: (Default: 120) How many requests per minute the sync may send to Waid. Waid does not publish a limit; lower it if other integrations share your API access.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.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.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, 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.
- 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.
5. Check your new source
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.Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.Fields by stream
Members and groups
Members
Members
Every member of the platform (students and administrators) with contact data, status, groups and tags. Incremental by last update: each sync reads the members changed since the previous sync, with a one-day safety margin.Table:
members · Primary key: id · Sync: Incremental (updated_at)Member Profiles
Member Profiles
The member report: profile fields, registration custom fields (for example state or schooling), phones, address and number of enrollments. Read in full on every sync.Table:
member_profiles · Primary key: id · Sync: Full tableMember Accesses
Member Accesses
One row per access (sign-in) of a member, from the access history. Incremental by access time.Table:
member_accesses · Primary key: member_id, accessed_at · Sync: Incremental (accessed_at)Access Groups
Access Groups
Access groups (turmas): which products each group gives access to, how access expires and how many members it has. Read in full on every sync.Table:
groups · Primary key: id · Sync: Full tableGroup Members
Group Members
Each member’s link to each access group, including links of members removed from the group (
is_active = false). Incremental per group by the link’s last update.Table: group_members · Primary key: group_id, member_id · Sync: Incremental (updated_at)Learning
Products
Products
Products (courses, materials, plans) with category, type, prices, instructors and the groups that give access to them. Read in full on every sync.Table:
contents · Primary key: id · Sync: Full tableLessons
Lessons
Every lesson of every product, with its module and position. Read in full on every sync.Table:
lessons · Primary key: id · Sync: Full tableEnrollments
Enrollments
Every enrollment of a member in a product, with start and completion dates and the completion percentage. Read in full on every sync (Waid offers no date filter for enrollments).Table:
enrollments · Primary key: id · Sync: Full tableLesson Completions
Lesson Completions
One row per lesson a member finished, with the lesson, module, product, member and enrollment. Incremental by completion time.Table:
lesson_completions · Primary key: id · Sync: Incremental (finished_at)Member Grades
Member Grades
Progress and average grade of each member in each product, with the minimum grade the product requires for its certificate. Read in full on every sync.Table:
member_grades · Primary key: member_id, content_id · Sync: Full tableContent Reviews
Content Reviews
Ratings and comments members left on products and lessons. Read in full on every sync.Table:
content_reviews · Primary key: id · Sync: Full tableSales
Sales
Sales
One row per payment of Waid Pay, the platform’s own checkout, with buyer, product, amounts, status and billing address. Incremental by purchase day: each sync re-reads the purchases of the last 60 days (Sales Lookback Days) and every refunded, cancelled or disputed payment bought since the Start Date (at most 400 days back).Table:
sales · Primary key: id_payment · Sync: Incremental (purchase_date)Implementation Notes
Data Quality Considerations
- How each stream is kept up to date:
- Members, group members, lesson completions and member accesses: each sync reads what changed (or happened) since the previous sync, with a one-day safety margin (Lookback Days).
- Sales: each sync re-reads the purchases of the last 60 days (Sales Lookback Days) and every payment that is refunded, cancelled or disputed among purchases since the Start Date (at most 400 days back), so those status changes reach your table even on older purchases. Other changes to purchases older than the lookback (for example a late confirmation) are picked up by a full sync.
- Member profiles, access groups, products, lessons, enrollments, member grades and content reviews: read in full on every sync. A full read is completed before anything is loaded, so a sync that fails halfway leaves the previous table in place. Access groups are loaded completely before their members are read, so a failure while reading group members does not cut the groups table. If a stream that had records comes back completely empty, the sync stops instead of emptying the table (Content Reviews excepted: every review can be removed).
- Removed members stay in Group Members with
is_active = falseand the date they were removed (inactivated_at).has_accessandaccess_expires_atreflect the moment the row was read: an access that simply expires does not change the link, so an incremental sync keeps the old value until a full sync. - Deleted records stay in incremental tables (for example, a member deleted in Waid). A full sync removes them.
- Nested information (tenants, tags, prices, custom registration fields) is stored as JSON text. Small objects are split into their own columns (for example
member_id,content_title,address_city). extra_fieldskeeps, as JSON, any field Waid returns that has no column of its own, and any value of an unexpected type. Fields that could give access to an account (sign-in and password links, tokens, keys, password hashes) are removed when detected by their name.- Sales dates (
dt_date_insert,dt_date_confirmed…) are kept exactly as Waid returns them; Waid does not document their time zone.purchase_dateis the day of the purchase. Waid does not document whether the amounts (pr_price,pr_price_gross,pr_service_fee) are in reais or cents; Nekt confirms it on your first sync. - Sales from external checkouts (Hotmart, Eduzz, Kiwify…) only appear if Waid records them in its sales report. For those platforms, Nekt has dedicated connectors.
- The Waid API does not provide issued certificates or detailed quiz answers. Member Grades shows each member’s average grade and whether it reaches the minimum grade required for the certificate.
- To see every member of a group, use Group Members; the
groupscolumn of Members is a convenience copy.
API Limits & Performance
- Waid does not publish a request limit. The connector sends at most 120 requests per minute (Max Requests per Minute) and waits when Waid asks it to slow down.
- Lists are read in pages of up to 100 records (500 for products, member grades and reviews). The connector checks every list against the total Waid reports and against the previous page. If a list changes while it is read (a student enrolls, a member is removed), the connector reads it again; if the records still do not add up to Waid’s total, the sync stops and the next sync tries again. Records that Waid leaves out of both the list and its total cannot be detected.
- The first sync of a platform with many years of history reads the date-filtered streams month by month and can take a while; later syncs only read what changed.
Troubleshooting
Skills for agents
Download Waid skills file
Waid connector documentation as plain markdown, for use in AI agent contexts.