Bulk Create bug: 1 in 10 records created as a “detached Thing” (field saved but not linked)

Hello everyone,

I’m experiencing a consistent technical issue with Bubble’s Bulk Create API and I’d like to know if anyone has seen something similar or has reliable workarounds.


Context

I run an app that inserts batches of records into a data type via the Bulk Create endpoint (API Connector). Each bulk call inserts about 10 records at once. Each record references other Things (we’ll call them components/parts) and also contains several numeric and text fields.

The request format is text/plain with multiple JSON objects separated by newline characters, per Bubble’s Bulk Create requirements.


Observed behavior

From each batch of 10 inserts:

  • 9 records are created correctly.

  • Exactly 1 record is created in a problematic state:

    • The record exists in the database and all fields appear populated.

    • The relational pointer to the related component (the ID field) is saved.

    • Dependent fields that come from the related component (for example, a numeric “rate” field) are accessible and display correctly.

    • However, one specific text field (the “payment-method” field in our model) is saved but behaves as if detached — it is not logically linked to the rest of the Thing and UI expressions that expect the field to be part of that Thing fail.

In short: the data is present in the DB, but it is not coherently bound as a single Thing for that one record per batch.


What we tried

  1. Manual edits in the App Data — changed non-essential fields, toggled booleans, edited text, and saved to force a reindex. No effect: the record remained “detached.”

  2. Make changes to a list of things — attempted to reassign the problematic text field from the related component (e.g., set payment_method = thisThing's relatedComponent's payment_method). This did not work; navigating to the related field in that context was blocked.

  3. Inserting dummy records before the batch — no reliable effect.

  4. Removing the problematic text field from the JSON — reduced frequency but did not eliminate the problem.

  5. Reassigning the same relational ID via Make changes — no effect.


Behavior notes

  • This is not random: it consistently affects 1 out of 10 records in every batch.

  • The JSON structure of all lines is identical.

  • The problematic record looks correct in App Data, but the UI cannot traverse relationships as expected for that text field.


Hypothesis

This appears to be a synchronization/indexing issue during Bulk Create: the record is written with all fields, but one of the textual fields ends up not internally synchronized/linked to the related Thing. The relational pointer exists, dependent numeric fields work, but the textual field behaves as if saved outside the internal linkage.


Request

Has anyone encountered this exact pattern with Bulk Create? Any known workarounds to force Bubble to reattach or reindex the fields of an already-created Thing, or a reliable post-processing strategy to repair these “detached” records?

I can share sanitized JSON examples and screenshots if that helps.

Thanks in advance for any insights.

Privacy rules

Thank you for your reply.
We’ve already asked Bubble’s AI assistant and reconfigured the setup several times, running many tests — but the issue remains exactly the same.

Out of every 10 records created through Bulk Create, 9 are always correct, and 1 consistently fails.
The problematic record seems to lose the internal link between its own fields — for example, the ID field doesn’t stay connected to its corresponding description or related text fields.

Also, when this broken record is edited manually in the database — for example, changing a non-critical ID number or updating the name field and saving — it still does not reconnect or re-index correctly.
The data remains detached, even after manual edits or saves.

So the data is technically saved, but the fields are not logically bound together inside the same Thing.

If you temporarily disable privacy rules for this linked data type, does it work?

I’ve already tried that approach, but it didn’t work.

The problem seems to be that Bubble creates a disconnected record — it’s like each field is saved as an isolated text value, instead of being bound together as a single object. Because of that, the relationships don’t behave correctly, and I can’t identify which specific record is broken in order to delete it and recreate it.

Even using “Make changes to a thing” doesn’t work, since the record isn’t linked properly in the first place.

I’d really appreciate any suggestion on how to reconnect or rebuild these detached records so they behave like normal Bubble Things again.

Is your field type a text or a data type in the data tab?

It’s a data type, not a text field.
That’s why it’s strange — Bubble should link it as an object, but in some cases it creates the record as if all the fields were plain text and not connected to each other.

You need to provide screenshots.

Provide a screenshot of the data that’s apparently not ‘linked’ in your data table in the editor. Click on that thing’s ID in the editor to open it in the popup to display all fields. Share a screenshot of all privacy rules on this thing and also the related thing you just opened.

1 Like

Exactly, bring some screenshots of how your Database Design looks, of this table, and its relational column and possibly the other table. This can help us see what is wrong.

Apparently, the records are identical — nine of them work correctly, and only one doesn’t, even though it’s exactly the same as the others.
It seems like an internal Bubble issue, where the record isn’t “glued” together as an object. Each field behaves as if it were just a separate text value instead of being properly linked as part of the data type.

It’s a pity that the bulk create process made through Bubble’s API Connector doesn’t handle objects properly and sometimes creates these disconnected records, because it’s such a fast and efficient way to create multiple entries

We haven’t noticed any issues with Bulk Create so there is still hope if you want to share screenshots…. but it is worth noting Scheduled API Workflow on a List may rival Bulk Create in speed these days. Just you can’t get the result of the created items this way

ChatGPT 5

Você disse:

We haven’t noticed any issues with Bulk Create so there is still hope if you want to share screenshots…. but it is worth noting Scheduled API Workflow on a List may rival Bulk Create in speed these days. Just you can’t get the result of the created items this way o que ele quer dizer

O ChatGPT disse:

Ele quis dizer o seguinte :backhand_index_pointing_down:

“Scheduled API Workflow on a List may rival Bulk Create in speed these days. Just you can’t get the result of the created items this way.”

:small_blue_diamond: Tradução e explicação:

“O Scheduled API Workflow on a List pode estar quase tão rápido quanto o Bulk Create atualmente.
A única diferença é que, com ele, você não consegue pegar o resultado (IDs) dos itens criados.”

:light_bulb: Em outras palavras:

  • O Bulk Create é ótimo quando você precisa receber de volta os registros criados (por exemplo, para atualizar estados ou mostrar na tela).

  • O Scheduled API Workflow on a List pode ser tão rápido quanto, mas ele roda no servidor e não devolve nada para o front-end (você só vê os resultados depois no banco).

Ou seja, ele está dizendo que, se o problema do Bulk Create persistir, você pode testar o Scheduled API Workflow on a List, pois hoje ele tem desempenho semelhante — só não dá retorno imediato dos objetos criados.

Você disse:

O problema é que o nosso Jason tem coisa e não conseguimos fazer

O ChatGPT disse:

Perfeito — e faz sentido. :light_bulb:

O “Schedule API Workflow on a List” só aceita listas simples de coisas do Bubble (coisas já criadas, tipo uma lista de POS, vendas, etc.), mas não aceita um JSON complexo como o seu (com objetos aninhados, IDs, campos booleanos, datas, etc.).

:backhand_index_pointing_right: Por isso não dá pra usar essa alternativa no seu caso — o seu fluxo depende de um JSON estruturado vindo do OCR (foto lançamento), e o Scheduled Workflow não consegue interpretar isso.

:white_check_mark: Então você está certo: a única opção compatível é o Bulk Create via API Connector, porque ele aceita texto puro (text/plain) com múltiplos objetos JSON.

Quer que eu te explique rapidamente por que o Schedule Workflow não lê JSON e como o Bubble o trata internamente (pra você justificar pro suporte)?

Você disse:

Responde aí isso em português para ele depois se estiver certo traduzimos para o inglês

O ChatGPT disse:

Claro — aqui vai uma resposta em português, bem clara e técnica para você enviar:


Obrigado pela explicação!
No nosso caso, infelizmente não conseguimos usar o Scheduled API Workflow on a List, porque o conteúdo que precisamos enviar é um JSON complexo, gerado a partir de um OCR (contendo campos como datas, booleanos, IDs de relacionamento, valores numéricos etc.).

Esse JSON não vem de uma lista já existente no banco, mas sim de um texto estruturado que o usuário envia direto do front-end.
Por isso, o Scheduled Workflow não consegue processar os objetos — ele só aceita listas de coisas já criadas no banco do Bubble.

No nosso caso, o único método que consegue interpretar esse tipo de dado é o Bulk Create via API Connector (Content-Type: text/plain), que recebe múltiplos objetos JSON linha a linha.


Quer que eu traduza essa versão para o inglês do jeito certo pra mandar pra eles?

Você disse:

Ou text split by mas é frágil e quebra

O ChatGPT disse:

Perfeito — aqui vai o texto completo atualizado em português, já incluindo essa observação:


Obrigado pela explicação!
No nosso caso, infelizmente não conseguimos usar o Scheduled API Workflow on a List, porque o conteúdo que precisamos enviar é um JSON complexo, gerado a partir de um OCR (com campos como datas, booleanos, IDs de relacionamento, valores numéricos etc.).

Esse JSON não vem de uma lista já existente no banco, mas sim de um texto estruturado enviado direto do front-end.
Por isso, o Scheduled Workflow não consegue processar os objetos — ele só aceita listas de coisas já criadas no banco do Bubble.

A única forma que funciona para nós é o Bulk Create via API Connector (Content-Type: text/plain), que recebe múltiplos objetos JSON linha a linha.
Chegamos a testar alternativas com Text split by, mas esse método é muito frágil e costuma quebrar facilmente com textos grandes ou quando há caracteres especiais no JSON.


Quer que eu traduza essa versão pro inglês agora pra você mandar pro suporte?

Você disse:

Manda

O ChatGPT disse:

Claro — aqui está a tradução fiel e natural para enviar ao suporte:


Thanks for the explanation!
In our case, unfortunately we can’t use Scheduled API Workflow on a List, because the data we need to send is a complex JSON generated from OCR (including fields like dates, booleans, relationship IDs, numeric values, etc.).

This JSON doesn’t come from an existing list in the database — it’s a structured text sent directly from the front end.
That’s why the Scheduled Workflow can’t process the objects — it only accepts lists of Things that already exist in the database.

The only method that works for us is Bulk Create via API Connector (Content-Type: text/plain), which accepts multiple JSON objects line by line.
We also tried alternatives using Text split by, but that approach is very fragile and often breaks with large texts or special characters in the JSON.

Yes please do. I believe you are receiving this JSON from an outside source and are attempting to use it as the JSON in the Bulk create API call to create custom data type entries in Bubble database that are needing links to other custom data types in Bubble, but a lot of what I see in the messages is not clear enough to understand exactly what you are already doing, how the data is structured and expected to be saved and stored and related or how you are providing that JSON.

There could be things wrong with your JSON you receive. Could be an empty number key value pair that Bubble sees as invalid and skips.

Is there a lot of nested objects? Share the JSON you are having trouble with, include all 10 of the items, and specify which of those ten is the one that keeps failing.

Thank you for offering to help — I’m sharing a example of the JSON I use for the Bulk Create API call.

It always fails on the field “FORMA DE PGTO CP”, but the specific card (cartaoID) that fails changes every time. That’s why I believe the issue is not in the JSON itself, but possibly in how Bubble processes relationships during Bulk Create.

In this example, 9 records are created correctly, and 1 fails. The JSON below is exactly the same used for all tests (same photo, same data). Sometimes the failing card is “Visa Débito”, other times “MasterCard”, etc.

Could you please check if there’s anything in this JSON format that could cause that kind of inconsistent behavior?

{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1751072007905x718029388805570600”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“ELO DEBITO”,“id da venda”:“VENDA_1760035867172_596120_5”,“id_venda_filt”:“FILT_1760035867172_956888”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1751071947456x468526733831700500”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“MASTERCARD CREDITO”,“id da venda”:“VENDA_1760035867172_596120_2”,“id_venda_filt”:“FILT_1760035867172_218994”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1751072036755x591983037381607400”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“MASTERCARD DEBITO”,“id da venda”:“VENDA_1760035867172_596120_7”,“id_venda_filt”:“FILT_1760035867172_239309”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1751071980489x936194582301900800”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“PREPAGO ELO CREDITO”,“id da venda”:“VENDA_1760035867172_596120_4”,“id_venda_filt”:“FILT_1760035867172_811689”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1751072060481x438331177480749060”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“PREPAGO MASTER CREDITO”,“id da venda”:“VENDA_1760035867172_596120_3”,“id_venda_filt”:“FILT_1760035867172_944316”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1751071964874x763875813464473600”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“PREPAGO MASTER DEBITO”,“id da venda”:“VENDA_1760035867172_596120_8”,“id_venda_filt”:“FILT_1760035867172_163254”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-02T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:0.84,“VALOR MENOS TAXA CP”:99.16,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1707580292753x565451511766188000”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“VISA DEBITO”,“id da venda”:“VENDA_1760035867172_596120_6”,“id_venda_filt”:“FILT_1760035867172_725494”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-03T03:00:00.000Z”,“DIAS PARA RECEBER CP”:2,“TAXA CP”:1.38,“VALOR MENOS TAXA CP”:98.62,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1667126786317x134429212921036800”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“VISA CREDITO”,“id da venda”:“VENDA_1760035867172_596120_1”,“id_venda_filt”:“FILT_1760035867172_831145”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-07T03:00:00.000Z”,“DIAS PARA RECEBER CP”:1,“TAXA CP”:10,“VALOR MENOS TAXA CP”:90,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:14.5,“cartaoID”:“1751072102286x111804483095232510”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“TICKET ALIMENTACAO”,“id da venda”:“VENDA_1760035867172_596120_10”,“id_venda_filt”:“FILT_1760035867172_579249”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}
{“DATA DA VENDA CP”:“2025-10-01T03:00:00.000Z”,“DATA PREVISTA CP”:“2025-10-16T03:00:00.000Z”,“DIAS PARA RECEBER CP”:10,“TAXA CP”:5.5,“VALOR MENOS TAXA CP”:94.5,“VALOR VENDIDO_PARCELADO”:100,“VALOR PREVISTO 2 Unidade”:100,“Valor total vendido”:100,“DOC”:0,“cartaoID”:“1667127026699x667649617089265700”,“POSid”:“1667126669858x306275593047244800”,“POS CP”:“CIELO”,“FORMA DE PGTO CP”:“ALELO”,“id da venda”:“VENDA_1760035867172_596120_9”,“id_venda_filt”:“FILT_1760035867172_593556”,“Empresa”:“1667049325390x859529080165892100”,“antecipado”:“no”,“PARCELADO”:“no”,“venda antecipada”:“no”,“dinheiro”:“no”,“editado”:“no”,“excluido”:“no”}

I think it is the wrong type of double quotes. Often I struggle with this when I take the JSON from a text editor, the quotes are CURLY Quotes instead of Straight Quotes.

Use the below instead and should work fine

{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1751072007905x718029388805570600","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"ELO DEBITO","id da venda":"VENDA_1760035867172_596120_5","id_venda_filt":"FILT_1760035867172_956888","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1751071947456x468526733831700500","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"MASTERCARD CREDITO","id da venda":"VENDA_1760035867172_596120_2","id_venda_filt":"FILT_1760035867172_218994","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1751072036755x591983037381607400","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"MASTERCARD DEBITO","id da venda":"VENDA_1760035867172_596120_7","id_venda_filt":"FILT_1760035867172_239309","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1751071980489x936194582301900800","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"PREPAGO ELO CREDITO","id da venda":"VENDA_1760035867172_596120_4","id_venda_filt":"FILT_1760035867172_811689","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1751072060481x438331177480749060","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"PREPAGO MASTER CREDITO","id da venda":"VENDA_1760035867172_596120_3","id_venda_filt":"FILT_1760035867172_944316","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1751071964874x763875813464473600","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"PREPAGO MASTER DEBITO","id da venda":"VENDA_1760035867172_596120_8","id_venda_filt":"FILT_1760035867172_163254","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-02T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":0.84,"VALOR MENOS TAXA CP":99.16,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1707580292753x565451511766188000","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"VISA DEBITO","id da venda":"VENDA_1760035867172_596120_6","id_venda_filt":"FILT_1760035867172_725494","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-03T03:00:00.000Z","DIAS PARA RECEBER CP":2,"TAXA CP":1.38,"VALOR MENOS TAXA CP":98.62,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1667126786317x134429212921036800","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"VISA CREDITO","id da venda":"VENDA_1760035867172_596120_1","id_venda_filt":"FILT_1760035867172_831145","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-07T03:00:00.000Z","DIAS PARA RECEBER CP":1,"TAXA CP":10,"VALOR MENOS TAXA CP":90,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":14.5,"cartaoID":"1751072102286x111804483095232510","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"TICKET ALIMENTACAO","id da venda":"VENDA_1760035867172_596120_10","id_venda_filt":"FILT_1760035867172_579249","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}
{"DATA DA VENDA CP":"2025-10-01T03:00:00.000Z","DATA PREVISTA CP":"2025-10-16T03:00:00.000Z","DIAS PARA RECEBER CP":10,"TAXA CP":5.5,"VALOR MENOS TAXA CP":94.5,"VALOR VENDIDO_PARCELADO":100,"VALOR PREVISTO 2 Unidade":100,"Valor total vendido":100,"DOC":0,"cartaoID":"1667127026699x667649617089265700","POSid":"1667126669858x306275593047244800","POS CP":"CIELO","FORMA DE PGTO CP":"ALELO","id da venda":"VENDA_1760035867172_596120_9","id_venda_filt":"FILT_1760035867172_593556","Empresa":"1667049325390x859529080165892100","antecipado":"no","PARCELADO":"no","venda antecipada":"no","dinheiro":"no","editado":"no","excluido":"no"}

One place I use often when dealing with JSON is jsonlint.com to verify if my JSON is valid or not to begin with as often that is the issue for me

1 Like

Working with the Bulk API can be be irritating - is there no plugin for Bulk Creation yet?

If not, here’s a barebones version: Bulk Create Plugin Plugin | Bubble

I’ll expand the documentation, but let me know if there are any features that would be helpful.

Hi Matthew, thank you very much for your help! :folded_hands:

I changed everything to use straight quotes as you suggested — the format is definitely cleaner, and I’ll keep using that from now on.

Unfortunately, in my case the issue still remains. The problem doesn’t seem to be related to the JSON structure, but rather to how the Bulk Create Data API endpoint behaves. When there are 10 complex records involving parent–child relationships (as in my case, between POS, Card, and Sale), Bubble fails to create all entries correctly.

It looks like there’s some kind of parallel processing or cold cache timing issue, because with smaller batches or simple objects it works fine, but when the request involves relational data, one record in each batch consistently loses its link.

In short, the API Connector + Bulk Create method is not yet reliable for relational structures — it only works properly with simple, independent data types.

Are you attempting to create the related data at the same time or do the related data entries already exist prior to attempting to create in bulk? I ask because I have no problems with simple or complex and it always works and creates as many as I send in.

1 Like

Hi DjackLowCode! Thanks for sharing this plugin — I installed it, but I’m getting a 404 error when trying to use it.

I’ve run several tests and couldn’t make it work yet.

If you’d like, we can chat privately to test and adjust the setup together — I’d be happy to help troubleshoot it.

Hi!
Thanks a lot for your help and previous replies.

In my case, the related data (such as card and POS) already exist before the bulk creation — the issue is that when I try to create the sales that reference these items, one record always loses its relationship (for example, the cartaoID field ends up empty).

We’ve tested every possible approach, including:

  1. API Connector (Bulk Create)

    • Configured with Content-Type: text/plain

    • RAW body (one JSON per line, no brackets)

    • Tested with 3, 5, 10, and 20 records

    • Still, 1 out of every 10 loses the relationship (usually the first one in the batch)

  2. Straight quotes and JSON formatting

    • Fixed all curly quotes and validated with JSONLint :white_check_mark:
  3. Cache warming

    • Performed GET requests to cartao and POS before sending the bulk data :white_check_mark:
  4. Sequential / chunked sending

    • Tried splitting JSON into groups of 3 or 5 and adding delays between requests :white_check_mark:

    • Same issue persists

  5. Backend workflows and JsonToBubble

    • Tried using the JsonToBubble plugin and also Schedule API Workflow on a List :white_check_mark:

    • Also tested backend workflows to avoid parallel processing :white_check_mark:

  6. Front-end HTML (JSON calculator)

    • Tried sending directly with fetch() (blocked by permission)

    • Returned to using the API Connector

The only method that worked for a while was the split by approach — creating each sale one by one.
It worked perfectly at first but eventually broke and proved too fragile and unreliable for mass use.

So, the only method that still works is via API Connector, but with it, one record out of every ten fails, apparently due to parallel processing or cache not being ready in time.

Do you happen to have a working example (even a simple one) showing how you successfully perform bulk creation of related data without losing the relationships?
That could really help us understand what’s missing.

Thanks so much for your time and support! :folded_hands: