feat(S10): pixel do Meta na página pública de campanha (campo admin + PageView + Lead) #109

Merged
fsolla merged 1 commit from S10-pixel-do-meta-facebook-na-pagina-publica-de-campanha-cam into main 2026-08-19 23:04:18 +00:00
Owner

Closes #94

Pixel do Meta (Facebook) na página pública de campanha (S10).

Campo admin: group tracking ("Rastreamento / Ads") no global SiteSettings com facebookPixelId — mesma validação/normalização do precedente Petition (5–20 dígitos, sem HTML/JS), regra centralizada em validateFacebookPixelId (src/lib/facebookPixel.ts, o Petition refatorado para o helper compartilhado).

PageView: home pública ((home)/layout.tsx) injeta o base code via <MetaPixel> (next/script, afterInteractive) quando o ID está configurado e válido — fail-closed (sem ID → nada renderizado, zero impacto). Leitura via getCachedGlobal('site-settings') (ISR sob global_site-settings; a edição do admin já revalida a home via afterChange existente). Pixel escopado ao grupo da página de campanha — sem PageView vazando para notícias/etc.

Lead: CampaignNewsletterForm dispara exatamente um trackMetaLead(pixelId, 'novidades-da-campanha', crypto.randomUUID()) no sucesso da captura (S9) — padrão exato do PetitionForm, nunca no page load.

Schema: migration 20260819_213947_add_site_settings_facebook_pixel_id (tracking_facebook_pixel_id + versão, sem backfill).

Testes: unit validateFacebookPixelId · e2e novo campaignHomePixel (script #meta-pixel-* presente só com ID configurado; CDN do Meta stubada; mode: serial por precedente campaignNearestMunicipality) · unit da home ajustado (mock da leitura do global).

Fora da fatia (gatilhos herdados do plano pixel-meta-abaixo-assinado): CAPI/Advanced Matching, dedup eventID, fila/retry de Lead, cookie banner/CMP.

Plano: docs/plans/pixel-meta-pagina-campanha-impl.md (aprovado em sessão) · changelog 2026-08-19-s10.md.

Closes #94 Pixel do Meta (Facebook) na página pública de campanha (S10). **Campo admin:** group `tracking` ("Rastreamento / Ads") no global `SiteSettings` com `facebookPixelId` — mesma validação/normalização do precedente `Petition` (5–20 dígitos, sem HTML/JS), regra centralizada em `validateFacebookPixelId` (`src/lib/facebookPixel.ts`, o `Petition` refatorado para o helper compartilhado). **PageView:** home pública (`(home)/layout.tsx`) injeta o base code via `<MetaPixel>` (`next/script`, `afterInteractive`) quando o ID está configurado e válido — fail-closed (sem ID → nada renderizado, zero impacto). Leitura via `getCachedGlobal('site-settings')` (ISR sob `global_site-settings`; a edição do admin já revalida a home via `afterChange` existente). Pixel escopado ao grupo da página de campanha — sem PageView vazando para notícias/etc. **Lead:** `CampaignNewsletterForm` dispara exatamente um `trackMetaLead(pixelId, 'novidades-da-campanha', crypto.randomUUID())` no sucesso da captura (S9) — padrão exato do `PetitionForm`, nunca no page load. **Schema:** migration `20260819_213947_add_site_settings_facebook_pixel_id` (`tracking_facebook_pixel_id` + versão, sem backfill). **Testes:** unit `validateFacebookPixelId` · e2e novo `campaignHomePixel` (script `#meta-pixel-*` presente só com ID configurado; CDN do Meta stubada; `mode: serial` por precedente `campaignNearestMunicipality`) · unit da home ajustado (mock da leitura do global). Fora da fatia (gatilhos herdados do plano `pixel-meta-abaixo-assinado`): CAPI/Advanced Matching, dedup `eventID`, fila/retry de `Lead`, cookie banner/CMP. **Plano:** `docs/plans/pixel-meta-pagina-campanha-impl.md` (aprovado em sessão) · changelog `2026-08-19-s10.md`.
fsolla added 1 commit 2026-08-19 22:23:44 +00:00
feat(S10): pixel do Meta na página pública de campanha (campo admin em SiteSettings + PageView na home + Lead no sucesso da captura)
Some checks failed
CI (PR) / checks (pull_request) Successful in 13m21s
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 13m24s
4c8eaedba0
Campo tracking.facebookPixelId no global SiteSettings (mesma validação/normalização do precedente Petition, regra centralizada em facebookPixel.ts); home (grupo (home)) injeta o base code + PageView quando o ID está configurado (fail-closed) e o CampaignNewsletterForm dispara exatamente um Lead no sucesso do S9. Migration 20260819_213947_add_site_settings_facebook_pixel_id. Closes #94
fsolla force-pushed S10-pixel-do-meta-facebook-na-pagina-publica-de-campanha-cam from 4c8eaedba0 to e339ceec9f 2026-08-19 22:44:56 +00:00 Compare
fsolla merged commit e339ceec9f into main 2026-08-19 23:04:18 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: fsolla/teqo#109
No description provided.