TikTok Ads
Você autoriza na própria plataforma do TikTok e o caOS cadastra os anunciantes que a autorização devolver. Não há nada para digitar, e também não há onde digitar um anunciante à mão.
Começar
Conectarautorização na plataforma
Em Fontes · Conectar nova fonte · TikTok Ads, o cartão abre a tela de autorização do TikTok. O link vale 10 minutos e serve uma vez.
A janela só fecha depois que o caOS já cadastrou os anunciantes, então não há etapa em segundo plano. Em seguida marque os que entram no workspace e aplique uma tag. Nome e moeda vêm da própria API.
Quem clica precisa já ter acesso ao anunciante no Business Center. O caOS cadastra exatamente o que vier na resposta. Se a conta não veio, o conserto é do lado do TikTok, não na tela do caOS.
Sua credencial, e o que acontece com ela
Conectou uma vez, está conectado. A credencial se renova sozinha, indefinidamente. Você não precisa marcar data no calendário nem reconectar de tempos em tempos.
Só existe um jeito de a conexão cair: alguém revogar o acesso do lado da plataforma (senha trocada, pessoa removida da conta, autorização cancelada). Aí a conta aparece em Conexões perdidas e reconectar resolve, com as tags que ela já tinha.
A credencial fica cifrada de ponta a ponta. Ela é cifrada antes de ser gravada, e a chave não vive no banco: nem quem tem acesso ao banco lê o valor. Ninguém no caOS, nem você, vê a credencial de volta depois de salva; a tela mostra apenas que ela existe e está válida.
Só é lida a métrica que você pediu. O caOS não escreve na sua conta de anúncio para extrair dados, e não guarda dado pessoal de quem viu o anúncio. O tratamento segue a LGPD, e a exclusão é sua: revogar a conexão apaga a credencial guardada.
Referência
Métricas e dimensõeso que cada campo quer dizer
O TikTok separa as métricas em tabelas por assunto: a básica traz investimento e entrega, e vídeo e engajamento ficam em tabelas próprias, ligadas pelo anúncio e pelo dia.
Métricas principais11
| Campo na API | O que é | Onde aparece |
|---|---|---|
| spend | Quanto foi investido, na moeda da conta. | Investimento no Pacer. |
| impressions | Quantas vezes o anúncio foi exibido. | Impressões. |
| clicks | Cliques que levam ao destino. | Cliques. |
| reach | Pessoas diferentes que viram o anúncio. | Alcance. Não some entre dias nem entre anúncios. |
| frequency | Impressões por pessoa. | Frequência. O Pacer recalcula como impressões ÷ alcance do período. |
| conversion | Conversões atribuídas. | Existe também real_time_conversion, que é a versão que ainda vai mudar. |
| cost_per_conversion | Custo por conversão. | Recalcule a partir das somas se for agregar períodos. |
| video_play_actions | Reproduções iniciadas: o vídeo começou a tocar. | Fica na tabela de vídeo. É o número maior. |
| video_watched_2s | Assistiu 2 segundos. Existe também 6 segundos. | Tabela de vídeo. |
| video_views_p100 | Assistiu até o fim. Há também 25, 50 e 75. | Tabela de vídeo. |
| likes | Curtidas. Junto vêm comentários, compartilhamentos e seguidores. | Tabela de engajamento, separada da básica. |
Dimensões3
| Campo na API | O que é | Onde aparece |
|---|---|---|
| stat_time_day | O dia da linha. | Toda tabela de métrica vem por dia. |
| ad_id | O anúncio. | É a chave que liga a tabela básica, a de vídeo e a de engajamento. |
| advertiser_id | O anunciante. | Fica nas tabelas de cadastro, não nas de métrica por anúncio. |
Parâmetros do relatório
Os campos acima dizem o que volta. Estes parâmetros dizem como: eles decidem o grão da linha, o período que ela cobre e o que conta como conversão. Dois relatórios da mesma conta com números diferentes quase sempre diferem aqui.
| Parâmetro | O que muda | Valores |
|---|---|---|
| report_type | Que família de métrica volta. | BASIC traz desempenho; AUDIENCE traz idade, gênero e região. São chamadas separadas. |
| data_level | O grão de cada linha. | AUCTION_AD e AUCTION_CAMPAIGN. O caOS extrai os dois, e é por isso que existe a família por anúncio e a por campanha. |
| service_type | Leilão ou reserva. | AUCTION. Mídia comprada por reserva não vem por aqui. |
| dimensions | O recorte de cada linha. | ad_id ou campaign_id, mais stat_time_day. Sem a dimensão de dia, a API devolve o acumulado. |
Tudo que dá para puxar
As tabelas acima são as que a maior parte dos relatórios usa, mas você não está preso a elas. O catálogo inteiro do TikTok tem 20 tabelas e 841 campos, e ao montar a fonte você escolhe o que entra. O que aparece marcado como puxada por padrão é o que a fonte de exemplo usa; o resto está disponível do mesmo jeito.
A lista abaixo sai do próprio catálogo do Xtractor, o mesmo que a tela de nova fonte lê. Se um campo está aqui, a tela oferece.
ads_in_app_event_metrics_by_day176 campos
ad_id, stat_time_day, real_time_app_install, real_time_app_install_cost, app_install, cost_per_app_install, registration, cost_per_registration, registration_rate, total_registration, cost_per_total_registration, purchase, cost_per_purchase, purchase_rate, total_purchase, cost_per_total_purchase, value_per_total_purchase, total_purchase_value, total_active_pay_roas, app_event_add_to_cart, cost_per_app_event_add_to_cart, app_event_add_to_cart_rate, total_app_event_add_to_cart, cost_per_total_app_event_add_to_cart, value_per_total_app_event_add_to_cart, total_app_event_add_to_cart_value, checkout, cost_per_checkout, checkout_rate, total_checkout, cost_per_total_checkout, value_per_checkout, total_checkout_value, view_content, cost_per_view_content, view_content_rate, total_view_content, cost_per_total_view_content, value_per_total_view_content, total_view_content_value, next_day_open, cost_per_next_day_open, next_day_open_rate, total_next_day_open, cost_per_total_next_day_open, add_payment_info, cost_per_add_payment_info, add_payment_info_rate, total_add_payment_info, cost_total_add_payment_info, add_to_wishlist, cost_per_add_to_wishlist, add_to_wishlist_rate, total_add_to_wishlist, cost_per_total_add_to_wishlist, value_per_total_add_to_wishlist, total_add_to_wishlist_value, launch_app, cost_per_launch_app, launch_app_rate, total_launch_app, cost_per_total_launch_app, complete_tutorial, cost_per_complete_tutorial, complete_tutorial_rate, total_complete_tutorial, cost_per_total_complete_tutorial, value_per_total_complete_tutorial, total_complete_tutorial_value, create_group, cost_per_create_group, create_group_rate, total_create_group, cost_per_total_create_group, value_per_total_create_group, total_create_group_value, join_group, cost_per_join_group, join_group_rate, total_join_group, cost_per_total_join_group, value_per_total_join_group, total_join_group_value, create_gamerole, cost_per_create_gamerole, create_gamerole_rate, total_create_gamerole, cost_per_total_create_gamerole, value_per_total_create_gamerole, total_create_gamerole_value, spend_credits, cost_per_spend_credits, spend_credits_rate, total_spend_credits, cost_per_total_spend_credits, value_per_total_spend_credits, total_spend_credits_value, achieve_level, cost_per_achieve_level, achieve_level_rate, total_achieve_level, cost_per_total_achieve_level, value_per_total_achieve_level, total_achieve_level_value, unlock_achievement, cost_per_unlock_achievement, unlock_achievement_rate, total_unlock_achievement, cost_per_total_unlock_achievement, value_per_total_unlock_achievement, total_unlock_achievement_value, sales_lead, cost_per_sales_lead, sales_lead_rate, total_sales_lead, cost_per_total_sales_lead, value_per_total_sales_lead, total_sales_lead_value, in_app_ad_click, cost_per_in_app_ad_click, in_app_ad_click_rate, total_in_app_ad_click, cost_per_total_in_app_ad_click, value_per_total_in_app_ad_click, total_in_app_ad_click_value, in_app_ad_impr, cost_per_in_app_ad_impr, in_app_ad_impr_rate, total_in_app_ad_impr, cost_per_total_in_app_ad_impr, value_per_total_in_app_ad_impr, total_in_app_ad_impr_value, loan_apply, cost_per_loan_apply, loan_apply_rate, total_loan_apply, cost_per_total_loan_apply, loan_credit, cost_per_loan_credit, loan_credit_rate, total_loan_credit, cost_per_total_loan_credit, loan_disbursement, cost_per_loan_disbursement, loan_disbursement_rate, total_loan_disbursement, cost_per_total_loan_disbursement, login, cost_per_login, login_rate, total_login, cost_per_total_login, ratings, cost_per_ratings, ratings_rate, total_ratings, cost_per_total_ratings, value_per_total_ratings, total_ratings_value, search, cost_per_search, search_rate, total_search, cost_per_total_search, start_trial, cost_per_start_trial, start_trial_rate, total_start_trial, cost_per_total_start_trial, subscribe, cost_per_subscribe, subscribe_rate, total_subscribe, cost_per_total_subscribe, value_per_total_subscribe, total_subscribe_value
campaigns_in_app_event_metrics_by_day176 campos
campaign_id, stat_time_day, real_time_app_install, real_time_app_install_cost, app_install, cost_per_app_install, registration, cost_per_registration, registration_rate, total_registration, cost_per_total_registration, purchase, cost_per_purchase, purchase_rate, total_purchase, cost_per_total_purchase, value_per_total_purchase, total_purchase_value, total_active_pay_roas, app_event_add_to_cart, cost_per_app_event_add_to_cart, app_event_add_to_cart_rate, total_app_event_add_to_cart, cost_per_total_app_event_add_to_cart, value_per_total_app_event_add_to_cart, total_app_event_add_to_cart_value, checkout, cost_per_checkout, checkout_rate, total_checkout, cost_per_total_checkout, value_per_checkout, total_checkout_value, view_content, cost_per_view_content, view_content_rate, total_view_content, cost_per_total_view_content, value_per_total_view_content, total_view_content_value, next_day_open, cost_per_next_day_open, next_day_open_rate, total_next_day_open, cost_per_total_next_day_open, add_payment_info, cost_per_add_payment_info, add_payment_info_rate, total_add_payment_info, cost_total_add_payment_info, add_to_wishlist, cost_per_add_to_wishlist, add_to_wishlist_rate, total_add_to_wishlist, cost_per_total_add_to_wishlist, value_per_total_add_to_wishlist, total_add_to_wishlist_value, launch_app, cost_per_launch_app, launch_app_rate, total_launch_app, cost_per_total_launch_app, complete_tutorial, cost_per_complete_tutorial, complete_tutorial_rate, total_complete_tutorial, cost_per_total_complete_tutorial, value_per_total_complete_tutorial, total_complete_tutorial_value, create_group, cost_per_create_group, create_group_rate, total_create_group, cost_per_total_create_group, value_per_total_create_group, total_create_group_value, join_group, cost_per_join_group, join_group_rate, total_join_group, cost_per_total_join_group, value_per_total_join_group, total_join_group_value, create_gamerole, cost_per_create_gamerole, create_gamerole_rate, total_create_gamerole, cost_per_total_create_gamerole, value_per_total_create_gamerole, total_create_gamerole_value, spend_credits, cost_per_spend_credits, spend_credits_rate, total_spend_credits, cost_per_total_spend_credits, value_per_total_spend_credits, total_spend_credits_value, achieve_level, cost_per_achieve_level, achieve_level_rate, total_achieve_level, cost_per_total_achieve_level, value_per_total_achieve_level, total_achieve_level_value, unlock_achievement, cost_per_unlock_achievement, unlock_achievement_rate, total_unlock_achievement, cost_per_total_unlock_achievement, value_per_total_unlock_achievement, total_unlock_achievement_value, sales_lead, cost_per_sales_lead, sales_lead_rate, total_sales_lead, cost_per_total_sales_lead, value_per_total_sales_lead, total_sales_lead_value, in_app_ad_click, cost_per_in_app_ad_click, in_app_ad_click_rate, total_in_app_ad_click, cost_per_total_in_app_ad_click, value_per_total_in_app_ad_click, total_in_app_ad_click_value, in_app_ad_impr, cost_per_in_app_ad_impr, in_app_ad_impr_rate, total_in_app_ad_impr, cost_per_total_in_app_ad_impr, value_per_total_in_app_ad_impr, total_in_app_ad_impr_value, loan_apply, cost_per_loan_apply, loan_apply_rate, total_loan_apply, cost_per_total_loan_apply, loan_credit, cost_per_loan_credit, loan_credit_rate, total_loan_credit, cost_per_total_loan_credit, loan_disbursement, cost_per_loan_disbursement, loan_disbursement_rate, total_loan_disbursement, cost_per_total_loan_disbursement, login, cost_per_login, login_rate, total_login, cost_per_total_login, ratings, cost_per_ratings, ratings_rate, total_ratings, cost_per_total_ratings, value_per_total_ratings, total_ratings_value, search, cost_per_search, search_rate, total_search, cost_per_total_search, start_trial, cost_per_start_trial, start_trial_rate, total_start_trial, cost_per_total_start_trial, subscribe, cost_per_subscribe, subscribe_rate, total_subscribe, cost_per_total_subscribe, value_per_total_subscribe, total_subscribe_value
ad_groups78 campos
adgroup_id, age, display_mode, operation_system, creative_material_mode, excluded_audience, optimize_goal, budget_mode, brand_safety_partner, enable_inventory_filter, conversion_bid, interest_keywords, scheduled_budget, deep_external_action, modify_time, placement_type, is_comment_disable, audience, schedule_end_time, brand_safety, daily_retention_ratio, languages, rf_predict_cpr, deep_bid_type, skip_learning_phase, rf_predict_frequency, external_type, gender, category, pixel_id, frequency_schedule, keywords, enable_search_result, bid, app_type, app_download_url, create_time, frequency, include_custom_actions, ios14_quota_type, bid_type, app_id, split_test_adgroup_ids, advertiser_id, buy_reach, dayparting, buy_impression, automated_targeting, pacing, statistic_type, is_hfss, conversion_id, campaign_name, rf_buy_type, device_models, campaign_id, device_price, schedule_start_time, placement, opt_status, status, external_action, conversion_window, adgroup_name, billing_event, location, budget, video_download, deep_cpabid, is_share_disable, feed_type, schedule_infos, exclude_custom_actions, action_v2, is_new_structure, schedule_type, interest_category_v2, connection_type
ads_page_event_metrics_by_day78 campos
ad_id, stat_time_day, complete_payment_roas, complete_payment, cost_per_complete_payment, complete_payment_rate, value_per_complete_payment, total_complete_payment_rate, page_browse_view, cost_per_page_browse_view, page_browse_view_rate, total_page_browse_view_value, value_per_page_browse_view, button_click, cost_per_button_click, button_click_rate, value_per_button_click, total_button_click_value, online_consult, cost_per_online_consult, online_consult_rate, value_per_online_consult, total_online_consult_value, user_registration, cost_per_user_registration, user_registration_rate, value_per_user_registration, total_user_registration_value, product_details_page_browse, cost_per_product_details_page_browse, product_details_page_browse_rate, value_per_product_details_page_browse, total_product_details_page_browse_value, web_event_add_to_cart, cost_per_web_event_add_to_cart, web_event_add_to_cart_rate, value_per_web_event_add_to_cart, total_web_event_add_to_cart_value, on_web_order, cost_per_on_web_order, on_web_order_rate, value_per_on_web_order, total_on_web_order_value, initiate_checkout, cost_per_initiate_checkout, initiate_checkout_rate, value_per_initiate_checkout, total_initiate_checkout_value, add_billing, cost_per_add_billing, add_billing_rate, value_per_add_billing, total_add_billing_value, page_event_search, cost_per_page_event_search, page_event_search_rate, value_per_page_event_search, total_page_event_search_value, form, cost_per_form, form_rate, value_per_form, total_form_value, download_start, cost_per_download_start, download_start_rate, value_per_download_start, total_download_start_value, on_web_add_to_wishlist, cost_per_on_web_add_to_wishlist, on_web_add_to_wishlist_per_click, value_per_on_web_add_to_wishlist, total_on_web_add_to_wishlist_value, on_web_subscribe, cost_per_on_web_subscribe, on_web_subscribe_per_click, value_per_on_web_subscribe, total_on_web_subscribe_value
campaigns_page_event_metrics_by_day78 campos
campaign_id, stat_time_day, complete_payment_roas, complete_payment, cost_per_complete_payment, complete_payment_rate, value_per_complete_payment, total_complete_payment_rate, page_browse_view, cost_per_page_browse_view, page_browse_view_rate, total_page_browse_view_value, value_per_page_browse_view, button_click, cost_per_button_click, button_click_rate, value_per_button_click, total_button_click_value, online_consult, cost_per_online_consult, online_consult_rate, value_per_online_consult, total_online_consult_value, user_registration, cost_per_user_registration, user_registration_rate, value_per_user_registration, total_user_registration_value, product_details_page_browse, cost_per_product_details_page_browse, product_details_page_browse_rate, value_per_product_details_page_browse, total_product_details_page_browse_value, web_event_add_to_cart, cost_per_web_event_add_to_cart, web_event_add_to_cart_rate, value_per_web_event_add_to_cart, total_web_event_add_to_cart_value, on_web_order, cost_per_on_web_order, on_web_order_rate, value_per_on_web_order, total_on_web_order_value, initiate_checkout, cost_per_initiate_checkout, initiate_checkout_rate, value_per_initiate_checkout, total_initiate_checkout_value, add_billing, cost_per_add_billing, add_billing_rate, value_per_add_billing, total_add_billing_value, page_event_search, cost_per_page_event_search, page_event_search_rate, value_per_page_event_search, total_page_event_search_value, form, cost_per_form, form_rate, value_per_form, total_form_value, download_start, cost_per_download_start, download_start_rate, value_per_download_start, total_download_start_value, on_web_add_to_wishlist, cost_per_on_web_add_to_wishlist, on_web_add_to_wishlist_per_click, value_per_on_web_add_to_wishlist, total_on_web_add_to_wishlist_value, on_web_subscribe, cost_per_on_web_subscribe, on_web_subscribe_per_click, value_per_on_web_subscribe, total_on_web_subscribe_value
ads42 campos
ad_id, ad_format, campaign_name, external_action, identity_type, campaign_id, impression_tracking_url, brand_safety_postbid_partner, ad_name, avatar_icon_web_uri, ad_texts, vast_moat, is_creative_authorized, adgroup_id, image_ids, product_ids, call_to_action_id, video_id, adgroup_name, advertiser_id, open_url_type, creative_type, landing_page_url, modify_time, profile_image, call_to_action, identity_id, page_id, display_name, opt_status, playable_url, is_new_structure, click_tracking_url, ad_text, landing_page_urls, is_aco, open_url, app_name, status, create_time, card_id, fallback_type
ad_accounts29 campos
advertiser_id, name, company, contacter, promotion_area, balance, license_province, currency, promotion_center_city, display_timezone, email, telephone, phonenumber, language, industry, create_time, address, role, reason, promotion_center_province, timezone, license_url, country, status, brand, license_city, description, license_no, owner_bc_id
ads_basic_data_metrics_by_day puxada por padrão26 campos
ad_id, stat_time_day, spend, cpc, cpm, impressions, clicks, ctr, reach, cost_per_1000_reached, conversion, cost_per_conversion, conversion_rate, real_time_conversion, real_time_cost_per_conversion, real_time_conversion_rate, result, cost_per_result, result_rate, real_time_result, real_time_cost_per_result, real_time_result_rate, secondary_goal_result, cost_per_secondary_goal_result, secondary_goal_result_rate, frequency
campaigns_basic_data_metrics_by_day26 campos
campaign_id, stat_time_day, spend, cpc, cpm, impressions, clicks, ctr, reach, cost_per_1000_reached, conversion, cost_per_conversion, conversion_rate, real_time_conversion, real_time_cost_per_conversion, real_time_conversion_rate, result, cost_per_result, result_rate, real_time_result, real_time_cost_per_result, real_time_result_rate, secondary_goal_result, cost_per_secondary_goal_result, secondary_goal_result_rate, frequency
ads_attribution_metrics_by_day16 campos
ad_id, stat_time_day, vta_app_install, vta_conversion, cost_per_vta_conversion, vta_registration, cost_per_vta_registration, vta_purchase, cost_per_vta_purchase, cta_app_install, cta_conversion, cost_per_cta_conversion, cta_registration, cost_per_cta_registration, cta_purchase, cost_per_cta_purchase
campaigns16 campos
campaign_id, campaign_name, campaign_type, objective, objective_type, advertiser_id, budget_mode, deep_bid_type, status, create_time, modify_time, opt_status, is_new_structure, split_test_variable, budget, roas_bid
campaigns_attribution_metrics_by_day16 campos
campaign_id, stat_time_day, vta_app_install, vta_conversion, cost_per_vta_conversion, vta_registration, cost_per_vta_registration, vta_purchase, cost_per_vta_purchase, cta_app_install, cta_conversion, cost_per_cta_conversion, cta_registration, cost_per_cta_registration, cta_purchase, cost_per_cta_purchase
ads_attribute_metrics14 campos
ad_id, campaign_name, objective_type, campaign_id, adgroup_name, placement, adgroup_id, ad_name, ad_text, tt_app_id, tt_app_name, mobile_app_id, promotion_type, dpa_target_audience_type
campaigns_attribute_metrics13 campos
campaign_id, campaign_name, objective_type, adgroup_name, placement, adgroup_id, ad_name, ad_text, tt_app_id, tt_app_name, mobile_app_id, promotion_type, dpa_target_audience_type
ads_video_play_metrics_by_day puxada por padrão11 campos
ad_id, stat_time_day, video_play_actions, video_watched_2s, video_watched_6s, average_video_play, average_video_play_per_user, video_views_p25, video_views_p50, video_views_p75, video_views_p100
campaigns_video_play_metrics_by_day11 campos
campaign_id, stat_time_day, video_play_actions, video_watched_2s, video_watched_6s, average_video_play, average_video_play_per_user, video_views_p25, video_views_p50, video_views_p75, video_views_p100
ads_audience_age_gender_by_day9 campos
advertiser_id, campaign_id, stat_time_day, age, gender, spend, impressions, clicks, conversion
ads_engagement_metrics_by_day puxada por padrão9 campos
ad_id, stat_time_day, profile_visits, profile_visits_rate, likes, comments, shares, follows, clicks_on_music_disc
campaigns_engagement_metrics_by_day9 campos
campaign_id, stat_time_day, profile_visits, profile_visits_rate, likes, comments, shares, follows, clicks_on_music_disc
ads_audience_province_by_day8 campos
advertiser_id, ad_id, stat_time_day, province_id, spend, impressions, clicks, conversion
“Engajamento” não é uma coluna. Curtidas, comentários, compartilhamentos e seguidores estão na tabela de engajamento; os cliques, na básica. O Pacer soma curtidas, comentários e compartilhamentos para montar a métrica. Se o seu relatório também conta cliques, diga isso em nota, porque a definição muda o número.
Saída
Onde os dados chegamplanilha e banco são coisas diferentes
Planilha do Google
Para quem monta relatório na mão
Marque investimento, impressões, cliques e o nome da campanha, e a aba se atualiza sozinha a cada sincronização.
Se quiser vídeo ou engajamento na mesma linha, marque também esses campos ao montar a fonte: eles vêm de tabelas diferentes, e o caOS junta para você.
BigQuery
Para quem vai modelar em cima
20 conjuntos de dados. Três de cadastro no lado do anúncio (contas, conjuntos e anúncios) e nove de métrica por dia: básica, engajamento, vídeo, evento de página, evento no app, atribuição, idade e gênero, região e atributos. O lado da campanha repete a mesma família.
Juntar vídeo e engajamento à básica é um join por anúncio e dia, e é trabalho seu no modelo.
Confiança
Atualização do dadopor que o número de ontem ainda muda
Plataforma de anúncio reescreve o passado. Conversão que só é atribuída dias depois, gasto revisado, linha corrigida: o número de terça-feira muda na quinta. Se a extração só trouxesse o dia novo, sua planilha ficaria congelada no primeiro valor e passaria a divergir da plataforma sem ninguém perceber.
Por isso o caOS relê os últimos 28 dias a cada sincronização, e reescreve o que mudou. O histórico mais antigo continua no destino e não é tocado. Na prática: o que está na sua planilha ou no seu banco é o que a plataforma diz hoje, não o que ela dizia no dia da primeira carga.
As métricas vão até ontem. O dia corrente não chega, por mais que você sincronize. Relatório que fecha no mesmo dia sempre mostra o dia anterior.
Detalhe
Bom sabero que costuma gerar dúvida
O TikTok reescreve o nome do anúncio. Em anúncios gerados por Smart+, a plataforma cola a legenda ou o nome do arquivo antes da sua taxonomia. O conector puxa o nome fielmente, sujo desde a origem. A limpeza acontece depois, no modelo.
Alcance existe, e não soma. Diferente do Kwai e do Google, o TikTok entrega alcance e frequência. Mas somar dias ou anúncios infla o número.
Demográfico só existe por campanha. Idade e gênero não descem até o anúncio: a API colapsa o recorte nesse nível, por privacidade. Região vem por anúncio e dia.
Suporte
Quando dá erradoa mensagem e o que fazer
“Invalid or expired state.” O link passou dos 10 minutos ou já tinha sido usado. Feche e clique no cartão de novo.
Diz conectado e nenhuma conta aparece. A autorização voltou sem anunciante nenhum. Quem autorizou não tinha acesso: resolva no Business Center e reconecte.
A sincronização fica vermelha com mensagem genérica. A causa mais comum é o acesso àquele anunciante ter saído: removido do Business Center, papel alterado, usuário desativado. Peça a quem administra o Business Center que devolva o acesso à pessoa que autorizou, e sincronize de novo. Refazer a conexão antes disso não adianta.
Essa falha já foi silenciosa: a API do TikTok responde sucesso mesmo quando recusa, e a extração terminava verde trazendo zero linha. Hoje o erro derruba a sincronização, o que é melhor do que um verde mentiroso.
“Limite de requisições da plataforma atingido.” É limite do TikTok. Espere e sincronize mais tarde.