portaly-email

Installation
SKILL.md

Portaly Vibe Invitation Email Integration

Use this skill to help a human user wire up the registration link from Portaly Vibe invitation emails to the right landing page.

Concept

When a follower clicks the CTA in a Portaly invitation email, the request always hits https://portaly.ai/r/{referralCode} first — that endpoint is the central click tracker (rate limit, click-event log, attribution). Portaly then 302-redirects to a landing page; three modes pick where:

Mode Landing URL creatorSubscriptionConfig
A. Hosted waitlist (default) https://portaly.ai/waitlist/{creatorSlug} appBaseUrl empty
B. Self-hosted waitlist https://{appBaseUrl}/waitlist/{creatorSlug} appBaseUrl set, inviteRedirectPath empty
C. Direct register https://{appBaseUrl}{inviteRedirectPath} both set (e.g. inviteRedirectPath: "/signup")

?ref / utm_source=invitation / utm_campaign / utm_content are appended in all three modes — attribution survives. Toggling propagates within ~60 seconds (Portaly's per-process cache TTL) and applies to every email already in flight.

Mode C trade-off: recipients bypass the Portaly waitlist. To get the new follower into the creator's user list and stamp the signedUp funnel stage, the register flow must call syncToPortaly (see portaly-user) with signupRefCode set. Without that call, the creator never sees the user and the campaign analytics' signedUp and converted both stay at 0 — converted only stamps for recipients whose signedUp has already been recorded.

Email Types Reference

Related skills
Installs
45
GitHub Stars
1
First Seen
Apr 29, 2026