Supabase 연동

리드가 빌더, CRM, CSV 몇 개에 흩어져 있고, 어느 것도 광고비와 조인되지 않습니다. 대신 양식이 제출되는 순간 모든 리드를 Supabase의 내 Postgres 테이블로 보내세요.

  • 웹훅
  • 랜딩 페이지, 퀴즈 퍼널, 워크플로(베타, HTTP 요청 사용)

연결하는 이유

Supabase와 LanderLab을 함께 쓰는 이유

  • 내 Postgres에 있는 내 리드

    리드 하나하나가 남의 도구 안에 갇힌 레코드가 아니라, 내 스키마와 내 열 타입을 가진 내 테이블의 행입니다.

  • 만들거나 호스팅할 서버 없음

    Supabase는 모든 테이블을 REST API로 노출하므로, 웹훅이 데이터베이스에 바로 씁니다. 코딩하고, 배포하고, 지켜볼 엔드포인트가 없습니다.

  • 설계부터 insert 전용인 키

    Row Level Security로 웹훅 키를 행 추가로만 제한할 수 있으므로, 그 키로는 리드를 단 하나도 읽거나 바꾸거나 지울 수 없습니다.

  • 리드 품질을 SQL로

    UTM, 클릭 ID, A/B 변형이 열에 있으면, 쿼리 하나로 캠페인별, 변형별 리드가 나오고, 결과 데이터와 조인하면 어떤 리드가 판매로 이어졌는지 보입니다.

  • 내 앱에 바로 쓸 수 있는 데이터

    같은 프로젝트에 만든 구매자 포털이나 영업 담당자 앱이 자체 정책으로 테이블을 읽으므로, 페이지가 받은 리드가 거기에 바로 나타납니다.

랜딩 페이지에서 쓰는 Supabase

진지한 리드 제너레이션 운영자는 결국 원본 데이터를 직접 관리하는 데이터베이스에 두고 싶어 합니다. 리드와 광고비를 조인하고, 리드 품질에 SQL을 돌리고, 구매자 포털이나 영업 담당자 앱에 데이터를 넣기 위해서. 보통 막히는 부분은 리드를 받는 엔드포인트를 만드는 일입니다. 누군가 작성하고 계속 돌아가게 관리해야 하니까요.

Supabase는 그 부분을 없앱니다. 모든 테이블에 이미 REST 엔드포인트가 있고, LanderLab의 웹훅이 리드를 열 이름과 값의 평평한 묶음으로 그곳에 포스트합니다. Postgres가 행을 넣고, Row Level Security가 요청이 할 수 있는 일을 정하며, 리드는 캠페인과 변형을 단 채 내 데이터베이스에 들어갑니다.

내 스키마에 리드마다 Postgres 행 하나

요청 본문은 열마다 키 하나인 평평한 구조라서, 리드마다 타입이 지정된 열, 열 기본값에서 오는 created_at 타임스탬프, 다른 시스템이 참조할 수 있는 id를 가진 행이 됩니다. 어떤 열과도 맞지 않는 키는 거절되므로, 엉뚱한 데이터가 테이블에 들어오지 않습니다.

Postgres이므로 행은 SQL로 할 수 있는 모든 일에 바로 쓸 수 있습니다. 일별·캠페인별 리드 뷰, 비용 테이블과의 조인, 그리고 중복 제출을 두 번 저장하기보다 거절하고 싶다면 이메일에 unique 인덱스.

Row Level Security로 잠그기

웹훅은 프로젝트의 publishable 키로 쓰고, Row Level Security가 그 키로 할 수 있는 일을 정합니다. 리드 테이블에 insert만 허용하고 나머지는 막으면, 그 키로는 리드를 추가할 수만 있고 읽거나 바꾸거나 지울 수 없으므로, 키가 비밀이 아니어도 리드 데이터에는 손이 닿지 않습니다.

Row Level Security를 우회하는 secret 키는 내 백엔드 밖으로 나갈 필요가 없습니다. 리드 양식에는 필요 없으니까요.

리드 품질에 대한 나만의 단일 기준

빌더, CRM, 트래커는 각자 이야기의 일부만 쥐고 있습니다. 모든 리드와 그 utm_campaign, 클릭 ID, 랜딩 페이지, 변형을 담은 Supabase 테이블은 내가 관리하는 부분입니다. 두 번째 테이블에 일일 광고비를 넣으면 SQL 뷰가 캠페인별, 변형별 리드당 비용을 보여 주고, 구매자나 영업 담당자가 기록한 결과를 더하면 판매당 비용을 보여 줍니다.

분할 테스트를 정직하게 판가름하는 방법이 바로 이것입니다. 어느 변형이 양식 제출을 더 받았는지가 아니라, 어느 변형의 리드가 돈이 됐는지.

insert가 실패해도 살아남는 리드

컴플라이언스 리드 전송이 켜져 있지 않다면, 모든 리드는 LanderLab 리드 탭에도 보관되고 날짜와 변형으로 필터링할 수 있으며 Grow 이상에서는 CSV로 내보낼 수 있습니다. 열 이름을 바꾼 뒤처럼 insert가 실패해도 리드는 사라지지 않습니다. 테이블을 고치고 내보낸 파일로 채워 넣으면 됩니다. 대신 LanderLab 워크플로(베타)로 보내면 실행 화면에서 어떤 리드의 요청이 실패했는지 정확히 보입니다.

활용 사례

유료 트래픽에서 Supabase를 활용하는 방법

  • 01

    모든 페이지를 아우르는 메디케어 리드 장부

    모든 메디케어·장례비 보험 페이지가 ZIP, 관심 플랜, 소스, 변형을 담아 리드 테이블 하나에 insert합니다. 쿼리 하나로 모든 페이지의 일별·캠페인별 리드가 나옵니다.

  • 02

    SQL로 보는 캠페인별 판매당 비용

    일일 광고비는 광고비 테이블로, 구매자 결과는 또 다른 테이블로 들어갑니다. 뷰가 세 테이블을 조인해 양식 제출당 비용이 아니라 판매된 리드당 비용으로 캠페인과 변형의 순위를 매깁니다.

  • 03

    같은 프로젝트 위의 구매자 포털

    구매자는 내 Supabase 프로젝트 위의 작은 앱에 로그인해 Row Level Security로 자기 리드만 보고, 리드는 페이지가 insert하는 순간 전달됩니다.

FAQ

Supabase 연동 FAQ

여기에 없는 내용은 문의하세요.

Supabase와 LanderLab

랜딩 페이지에 Supabase를 연결할 만한 때는 언제인가요?

리드를 내가 소유하고 SQL로 조회할 수 있는 데이터베이스에 두고 싶을 때입니다. 엔드포인트를 만들거나 호스팅하지 않고도 캠페인과 변형이 담긴 리드별 행을 얻습니다.

LanderLab은 Supabase와 연동되나요?

네, 페이지의 웹훅 연동으로 연결됩니다. 리드를 하나하나 테이블의 REST 엔드포인트로 포스트합니다.

Supabase로 리드를 보내려면 서버나 Zapier가 필요한가요?

아니요. Supabase의 REST API가 엔드포인트이고, 웹훅이 거기에 직접 씁니다.

Supabase 키로 리드를 보내도 안전한가요?

네, Supabase의 publishable 키를 쓰고 Row Level Security로 insert만 허용하면 안전합니다. 그 키로는 리드를 추가할 수만 있고, 아무것도 읽거나 바꿀 수 없습니다.

퀴즈 답변, UTM, 클릭 ID를 보낼 수 있나요?

네. 모든 퀴즈 답변과 utm_campaign, gclid 같은 모든 숨김 필드가 LanderLab의 페이지 URL, 변형 ID와 함께 각자의 열로 갈 수 있습니다.

다른 연동

나머지 스택도 연결하세요.

Supabase를 연결하고 다음 페이지를 런칭하세요.

페이지를 만들고, Supabase를 켜고, 광고를 그 페이지로 보내세요. 카드 없이 무료로 시작하세요.

프롬프트 하나에서 검증된 리드까지

프롬프트 하나가 라이브 태양광 견적 퍼널이 되고, 모든 리드가 구매자에게 라우팅되며, 예산을 갉아먹기 전에 새는 곳이 표시되는 과정을 보세요.

0:00
0:59