> For the complete documentation index, see [llms.txt](https://docs.sprinthub.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sprinthub.com/en/topics/integrations/data-import-tiny.md).

# Data Import (Tiny)

Bring your contacts, companies, products, and orders from the ERP **Tiny (olist)** directly into SprintHub, without typing anything by hand. You can also import from a CSV, XLSX, or XLS spreadsheet. The import follows a guided step-by-step flow: you choose the source, connect the account, review a preview, and import — tracking progress in real time.

**Available for administrators only.** The Import screen and the integration setup are only shown to users with account administration permission. If you don't see the menu, ask an administrator.

> **Before you start (Tiny only):** to connect Tiny you need to authorize access once in **Settings > Integrations**. This step is required and is done by an administrator. If you're importing from a spreadsheet (CSV/XLSX), go straight to the section **"Importing from a spreadsheet (CSV/XLSX)"**.

***

### Part 1 — Creating the Application

On the home page, open the sidebar and click **“Settings”**

<figure><img src="/files/5fb8460ed842ca29f0e226a7030a08c7780edd4b" alt=""><figcaption></figcaption></figure>

As soon as you enter, go to the bottom of the page and click **"Applications"**

<figure><img src="/files/9aa54b6fadd26140f2b41639c241389cb97c3667" alt=""><figcaption></figcaption></figure>

Now we create the Application by clicking **"new application"**

<figure><img src="/files/0f2d15fe7877477df55df47d5bffc37530e3a00c" alt=""><figcaption></figcaption></figure>

The redirect URL is shown in the Tiny integration panel on SprintHub from step 2, in blue.

<figure><img src="/files/dc15f21e764561d054a27a278ed654f546837e15" alt=""><figcaption></figcaption></figure>

The permissions depend on what will be used in SprintHub.

Ex: Use the Contacts import (check the contacts box)

<figure><img src="/files/25a02524e665aca42afa73286a46c76d7d0b94be" alt=""><figcaption></figcaption></figure>

### Part 2 — Connect your Tiny account

The connection to Tiny is made in the integrations area and applies to the entire account: once connected, any administrator can import.

#### 1. Open the Tiny integration

Go to **Settings > Integrations** and locate the card **Tiny (olist)**. Click it to open the side configuration panel.

<figure><img src="/files/58525c98dbc132f92c4b7cad6b79dcd0b2b0ee2e" alt=""><figcaption></figcaption></figure>

The panel opens with the title **Tiny (olist)** and the description "Connect the Tiny ERP to import contacts, companies, products, and orders".

<figure><img src="/files/3ff4241a3ca3d827e8cfefbbfe531ff9486a0d35" alt=""><figcaption></figcaption></figure>

#### 2. Enter the application credentials

There are two situations. **If the "Application credentials" block appears**, you need to create an application in Tiny and paste the data here:

* In the Tiny panel, create an **API v3 application**.
* Copy the **Client ID** and the **Client Secret** generated by Tiny.
* In SprintHub, paste the **Client ID** in the corresponding field and the **Client Secret** in the field below.
* Copy the **redirect URL** shown in the blue notice ("Register this URL in the Tiny application:") and paste it exactly in that form in your application settings in Tiny.
* Click on **Save credentials**.

<figure><img src="/files/75c07859924a0981d2bdc8e915b02ab18c1e62b2" alt=""><figcaption></figcaption></figure>

**If the credentials block does NOT appear**, your account already uses the connection managed by SprintHub — you don't need to create any application. The panel shows "The connection is managed by SprintHub: just authorize with your Tiny account login". Go straight to step 3.

{% hint style="info" %}
Note: the Client Secret is never shown again after being saved. To change it, just fill the field again (the field text says "Fill in only to replace the current secret"). Leave it blank if you only want to update the Client ID.
{% endhint %}

#### 3. Add (authorize) your account

In the block **Connected account**, click on **Add account**. You will be taken to Tiny to log in and authorize access. When you confirm, Tiny automatically brings you back to SprintHub.

<figure><img src="/files/035ec8be817c77a3cfb3a14d624cc7f3808aff55" alt=""><figcaption></figcaption></figure>

When successful, the green banner appears: **"Account connected. You can now import the data on the Import screen."**

<figure><img src="/files/e78a1cfc753d2e053f99e64e67486cf1b4caa517" alt=""><figcaption></figcaption></figure>

From here you can:

* **Go to import** — opens the import screen directly.
* **Reconnect account** — redoes the authorization (use if the connection expires).
* **Disconnect account** — removes access to the Tiny account. The application credentials remain saved.

{% hint style="info" %}
Remember: the button **Add account** is only enabled after the application credentials are saved. Until then, the notice "Save the application credentials to enable the connection" appears.
{% endhint %}

***

### Part 2 — Import from Tiny

#### 1. Open the Import screen and choose the source

Access the screen **Data import**. It opens on "Choose the data source". Click the card **Tiny (olist)**.

<figure><img src="/files/f780f923436e28700431e73cc5b3a0c2c91b433c" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note: if the Tiny card appears dimmed with the notice **"Account not connected"** and a **Connect**button, it means Part 1 has not been completed yet. Click **Connect** to go to Integrations and authorize the account first.
{% endhint %}

#### 2. Choose what to import

With the account connected, the green banner "Connected to Tiny (olist)" appears. In **"What do you want to import?"**, check one or more types:

* **Contacts**
* **Companies**
* **Products**
* **Opportunities** (your Tiny orders)

Use **Select all** to check everything at once (or **Clear** to uncheck). You can import more than one type at the same time.

<figure><img src="/files/388974fee774404a39578353eb5cd1406d9f4618" alt=""><figcaption></figcaption></figure>

**If you check Opportunities**, choose in **"Where should the opportunities go?"** the **Funnel** and the **Stage** destination stage. Won and canceled orders already come in with the correct status; the rest stay open in the stage you choose.

<figure><img src="/files/ea497e5ca4749d22e666c13044b31a4c8bc000ab" alt=""><figcaption></figcaption></figure>

Click on **Preview**.

#### 3. Review the preview

SprintHub shows a sample of each type, with the count of records found ("N records"). Click each section to expand and review.

<figure><img src="/files/a84ce452cc959181f1b74567d6d573844512d303" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/945c13d1f9f46e3ad9fc9a5888b180f6deff85f8" alt=""><figcaption></figcaption></figure>

If everything looks right, click **Import now**.

#### 4. Track the import

The import runs in the background and progress appears in a **floating bubble** ("Importing..."). You can keep navigating the system while it keeps running.

<figure><img src="/files/991c2f2d4d735a3d9f0c7e0ef69979a41e8b6039" alt=""><figcaption></figcaption></figure>

At the end, you see the summary by type with:

* **created** — new records
* **updated** — records that already existed and were completed
* **ignored** — records that had already been imported before (avoids duplicates)
* **failed** — records that could not be imported
* **processed** — total analyzed

<figure><img src="/files/0a0242ca0b216ae8bc87d966745791f92c0842f0" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note: the floating bubble can be dragged around the screen, hidden (it turns into a small ball) and, while it is still running, **Cancel** the import. After it finishes, use **Dismiss** to close it or **New import** to start another one.
{% endhint %}

***

### What is imported from Tiny

* **Contacts:** all active contacts become contacts in SprintHub (CPF/CNPJ goes into the document field). Contacts that are companies (legal entities) **also become a company**, and the contact is automatically linked to it by document.
* **Companies:** contacts of the legal entity type.
* **Products:** name, code, SKU, NCM, brand, unit, GTIN/EAN, and the **sale price**.
* **Opportunities:** each Tiny order becomes an opportunity, with the **actual status** (invoiced/approved/sent/delivered come in as won; canceled as lost; the rest as open), the **original date** of the order and the **items** linked to the products.

### Known limits and common errors

* **Reimporting does not duplicate.** SprintHub recognizes what has already been imported (contacts by CPF/CNPJ or email, companies by CNPJ, products by SKU/code) and only updates instead of creating again. Records already imported appear as **ignored**.
* **Records deleted in Tiny do not come through.** Contacts and products marked as deleted are ignored during import.
* **Invoices are not imported yet.** For now the import covers contacts, companies, products, and opportunities (orders).
* **Order items depend on a payment plan.** For order items to be linked to the opportunity, a payment plan must be set up. Without a plan, the opportunity is imported without the items.
* **"Your connection to this source has expired. Reconnect to continue."** — the Tiny authorization has expired. Go back to **Settings > Integrations > Tiny (olist)** and click on **Reconnect account**.
* **"Failed to connect to the source"** — something went wrong when coming back from Tiny. Try **Add account** again; check whether the **redirect URL** was entered correctly in the Tiny application.
* **Some failures in the summary?** Failed records are listed at the end of the import. They are usually temporary errors from the Tiny API — just **reimport**: what has already come in is ignored and only the missing ones are reprocessed.
* **Large accounts** may take longer because of Tiny's request limits. The import keeps running in the background; you don't need to stay on the screen.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.sprinthub.com/en/topics/integrations/data-import-tiny.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
