Guide

Using the dashboard

Everything you can do at furl.io/dashboard, in the order you’ll meet it. The short text under each option is the same text you see in its (i) tooltip.

Your account

Register

Open Create account and enter your email address and a password of 8 to 72 characters. An email can only be registered once. You’re signed in as soon as the account is created, on the Free plan.

To register you must tick I agree to the Terms of Use and Privacy Policy; the button stays disabled until you do. We record which version you accepted and when. Read the Terms of Use and Privacy Policy any time from the footer.

Verifying your email

Right after registering we email you a 6-digit code from [email protected], and you land on the Check your email page. Type or paste the code; it’s checked as soon as all six digits are in. The code expires after 10 minutes or 5 wrong attempts. Can’t find it? Check your spam folder, then use Resend code (once a minute, up to five times an hour). Typed the wrong address? Use Wrong email? Sign out and register again. Until your email is verified, signing in brings you back to this page.

Log in and log out

Sign in at Log in. To sign out, use Sign out at the bottom of the sidebar (or the sign-out icon at the top right on a phone). Signing out clears the session cookie in that browser.

Sessions

A session lasts 7 days, after which you’re asked to sign in again. The session is kept in a secure, HttpOnly cookie that scripts on the page can’t read. If you open a dashboard page after it expires, you land on the login page and return to where you were after signing in.

The dashboard at a glance

At the top of the sidebar (or under the top bar on a phone) is the workspace switcher, which shows the workspace you’re working in. Everything below it — links, analytics, API keys, plan and billing — belongs to that workspace. See Workspaces and teams.

The sidebar has four sections:

  • Overview — totals across all the workspace’s links for the selected range (24h, 7d, 30d or 90d): number of links, clicks, average clicks per hour or day, and the busiest hour or day. Below are a clicks chart, your top links by clicks, and a searchable list of your links.
  • Links — every link in the workspace, newest first. Search matches the short code and the destination. Select a link to open its detail page.
  • Workspace — the workspace’s name, members, invitations and custom domains.
  • Settings — your account details, and the workspace’s plan and usage, billing and API keys.

Workspaces and teams

Links, API keys, analytics, the plan and billing all belong to a workspace. Every account has a personal workspace, created with the account. It’s just for you: it can’t be shared, renamed or deleted. To work on links with other people, create a team workspace and invite them.

Creating a team workspace

Open the workspace switcher and choose Create team workspace, or use the button on the Workspace page of your personal workspace. Give it a name (up to 64 characters). It starts on the Free plan, with you as its owner, and has its own plan, limits and billing, separate from your personal workspace. You can own up to 10 team workspaces.

Switching workspaces

Pick a workspace in the switcher. The page reloads with that workspace’s links and settings, and your choice is remembered in this browser. Each workspace in the list shows your role in it.

Roles

RoleWhat they can do
MemberCreate, edit and delete any link in the workspace, and see its analytics.
AdminEverything a member can, plus manage API keys, invitations, members and custom domains, and rename the workspace.
OwnerEverything an admin can, plus pay for the plan, transfer ownership and delete the workspace. Each workspace has exactly one owner.

Inviting people

Admins and the owner invite people from Workspace → Invitations: enter an email address and choose Member or Admin. We email them a link that works for 7 days. They sign in, or create a free account, with that same email address and join the workspace straight away. You can withdraw an open invitation at any time.

Each plan includes a number of team members per workspace (seats). Members, including the owner, and open invitations both use a seat; the Invitations card shows how many are in use, for example “2 of 3 seats used”. When every seat is taken, withdraw an invitation, remove a member, or upgrade the plan.

Managing members

In Workspace → Members, admins and the owner can change a member’s role between Member and Admin, or remove them. A removed member loses access straight away; the links they created stay in the workspace.

Transferring ownership

The owner can choose Make owner next to another member. After you confirm, they become the owner and you stay on as an admin. Only the new owner can transfer it back.

Leaving or deleting a workspace

Anyone except the owner can choose Leave workspace on the Members card. The owner must transfer ownership first, or delete the workspace in Workspace → Danger zone by typing its name. Deleting a team workspace permanently erases all its links (they stop redirecting at once), their analytics, its API keys, invitations and custom domains.

Press Create link on the Links page. Only the destination is required; the other options can be changed later (except the short code). The Google Analytics and webhook options are under the collapsed Google Analytics and webhook section.

Destination URL

Where visitors are sent. Must be http:// or https://, up to 8,192 characters; can’t contain a username/password or point to furl.io itself.

Paste the full URL including https://. Links that would point back at furl.io are refused, which prevents redirect loops.

Custom short code

Your own alias, e.g. furl.io/MyCode. 3–64 characters: letters, digits, “_”, “-”, “.”. Case-sensitive (MyCode ≠ mycode). Each one uses a custom code from your plan’s allowance.

Reserved words (api, dashboard, docs, login, legal…) and well-known brand names and domains on our blocklist can't be used unless an admin assigns them to you. Leave it blank for a random 7-character code.

Leave the field blank and a random 7-character code is generated for you. To type your own, your plan needs a custom code left in its allowance; the hint under the field shows how many you’ve used. If someone already uses the code you’ll see “That code is already taken”. Codes can’t be changed after the link is created — create a new link instead. Because codes are case-sensitive, furl.io/Launch and furl.io/launch are different links.

Reserved and blocked names

Some codes can’t be used as custom codes. Reserved words are names the site itself uses, such as api, dashboard, docs, login, register, settings, legal, privacy, terms and support.

In addition, custom codes that match well-known brands, phishing-prone words or major domains are blocked to protect visitors — including look-alikes such as micr0soft-login. You’ll see “This short code is reserved…”. If you own the name, contact us: an administrator can assign the term to your account, which lets you use it. It still uses a custom code from your plan’s allowance.

Redirect type

302 Found (default, recommended): temporary; every click reaches furl.io and is counted.

301 Moved Permanently: browsers may cache it for 5 minutes, so repeat clicks from the same browser in that window aren’t counted.

307/308: like 302/301 but the browser keeps the original HTTP method and body (rarely needed for links).

TypeMeaningWhen to use it
302 FoundTemporary redirect.Almost always. Every click is counted.
301 Moved PermanentlyPermanent redirect; browsers may cache it for 5 minutes.When you want a permanent redirect and don’t mind missing repeat clicks from the same browser in that window.
307 Temporary RedirectLike 302, but keeps the HTTP method and body.Forwarding form posts or API calls (rare for shared links).
308 Permanent RedirectLike 301, but keeps the HTTP method and body.Permanent moves of API endpoints (rare for shared links).

Expires at

Links never expire unless you set a time here. After it, the link returns “410 Gone” instead of redirecting. Analytics are kept. Available on Pro and higher.

Links never expire unless you set an expiry. New links start with Never expires ticked; on Pro and higher, untick it and pick a time in the future to make the link stop working then (see expiry dates and view limits). The date and time are in your browser’s time zone and are stored in UTC.

You can change the expiry later in the edit form: set a time in the future to extend it or bring an expired link back, or tick Never expires to remove it. The link detail page shows the expiry relative to now (“Expires in 11 months”, “Never expires” or “Expired”).

Expire after N views

The link stops working (410 Gone) after this many visits. Each redirect counts as one view; link previews in chat apps don’t. Leave empty for unlimited. 1–100,000. Available on Pro and higher.

  • Optional, on Pro and higher; leave it empty for unlimited views. The limit is a whole number from 1 to 100,000.
  • Each redirect counts as one view. Link previews fetched by chat and social apps (Slack, WhatsApp, Telegram, Discord, Facebook, X/Twitter, LinkedIn…) and HEAD requests don’t count: they get a neutral page that doesn’t reveal the destination, so pasting the link into a chat doesn’t use up a view.
  • Once the limit is reached the link returns 410 Gone (“this link has reached its view limit”), and the dashboard shows a View limit reached tag.
  • You can raise the limit or remove it (clear the field) in the edit form at any time; views already used are kept, so raising the limit above the used count reopens the link.
  • View-limited links are never cached by browsers, even with a 301 or 308 redirect, so every visit reaches furl.io and is counted.

The link detail header shows progress as “Views 12 / 100 · 88 left” with a small meter, or “Unlimited views”; the Links table shows a compact “12/100 views” next to the status.

Google Analytics 4

Available on Pro and higher (see Webhooks and GA4 forwarding).

Optional Google Analytics 4 ID (G-XXXXXXXXXX). With an API secret, each click is also sent to GA4 as a “furl_click” event (params: short_code, link_id, referrer_domain, device_type, country).

Visitor IPs are never sent; GA4 gets a pseudonymous client ID. Available on Pro and higher.

Create in GA4 → Admin → Data streams → (stream) → Measurement Protocol API secrets. Stored securely; never shown again after saving.

Forwarding happens server-side via the GA4 Measurement Protocol, so ad blockers don’t affect it. Both the measurement ID and the API secret are needed for events to be sent. After saving, the secret is never shown again; the edit form only tells you whether one is saved, and lets you replace or remove it.

Webhook URL

Available on Pro and higher (see Webhooks and GA4 forwarding).

Optional public https:// endpoint that receives a signed JSON POST for every click (event link.clicked). Private/internal addresses are refused. Available on Pro and higher.

When you first set a webhook URL, a signing secret (whsec_…) is generated for the link. See Webhooks for the payload, signature verification, retries and a ready-made receiver.

The header shows the short URL (with a copy button), its status, the destination, and a summary of the redirect type, expiry, view limit, GA4 and webhook settings.

Analytics

  • Range: 24h, 7d, 30d or 90d, ending now.
  • Interval: hourly or daily buckets. Picking a range chooses a sensible interval (hourly for 24h, daily otherwise); you can switch. Hourly buckets are available for ranges up to 31 days.
  • Clicks counts every redirect. Unique visitors counts distinct IP addresses in the range. Clicks per visitor is the ratio of the two.

Breakdowns

The top 10 values in the selected range for countries, cities, referrers, devices, operating systems and browsers. “Direct” means the click had no referrer (typed, bookmarked, or from an app); “Unknown” means the value couldn’t be determined.

Live panel

A per-minute chart of the last 60 minutes and the 25 most recent clicks, refreshed every 5 seconds. A click usually appears within one or two seconds. If the panel can’t reach the server it says “Reconnecting…” and keeps trying.

Webhook panel and delivery log

Shows the endpoint, the signing secret (hidden until you reveal or copy it), and a log of recent deliveries: status (delivered, retrying or failed), the HTTP response code, duration, attempt number and the exact payload. Each retry is its own row.

Used to sign each delivery (X-Furl-Signature). Verify it on your server. You can rotate it at any time; the old secret stops working immediately.

Editing, pausing and deleting

Editing

Press Edit to change the destination, status, redirect type, expiry, view limit, GA4 settings and webhook URL. Only fields you change are saved. Ticking Never expires removes the expiry; clearing the view limit, GA4 ID or webhook URL removes that setting. The short code can’t be changed.

Status: pausing and resuming

Active redirects; Paused returns 404 (can resume any time); Archived returns 410 Gone. Banned links can only be changed by an administrator.

StatusWhat visitors getHow to change it
ActiveA redirect to the destination.Default for new links.
Paused404 Not Found.Pause link / Resume link in the header, or Edit.
Archived410 Gone.Edit → Status. Restore link brings it back.
Banned451 Unavailable For Legal Reasons.Set by an administrator; only they can lift it.

An expired link, and a link that has reached its view limit, returns 410 Gone too. Analytics are kept for paused, archived, expired and view-limited links.

Deleting

Delete removes the link permanently: it stops redirecting at once (visitors get 404) and its analytics are no longer available. If you might need the numbers later, archive the link instead.

API keys

  • Create a key in Settings → API keys. Give it a name that says where it’s used. A key belongs to the workspace that was selected when you created it and only works with that workspace’s links. Admins and the owner manage keys; members see a note instead.
  • The full key (45 characters, starting with furl_) is shown once. Copy it then; later only its prefix is shown.
  • Use it as Authorization: Bearer furl_… or X-API-Key: furl_…. See the API reference.
  • Revoking a key takes effect immediately. The list shows when each key was last used.

Custom domains

Add your own domain, such as go.example.com, in Workspace → Custom domains. How many you can add depends on the workspace’s plan. Admins and the owner add, verify and remove domains.

  • Choose Add domain and enter a domain or subdomain you control.
  • Prove it’s yours: at your DNS provider, create a TXT record with the name and value shown (the name looks like _furl-verify.go.example.com). Use the copy buttons to avoid typos.
  • Choose Verify now. When the record is found the domain shows Verified; otherwise it shows Verification failed and you can try again. DNS changes can take a few minutes to show up.
Verified domains will soon be usable for your short links. Verifying now means your domain is ready as soon as that arrives.

Deleting your account

Go to Settings → Danger zone → Delete account and confirm with your current password. This permanently erases your account, your personal workspace and any workspace where you’re the only member — with all of their links (they stop redirecting at once), API keys, webhook delivery logs and click analytics — and removes you from other team workspaces (links you created there stay with the team). If you own a team workspace that has other members, transfer ownership or delete it first. Some records, such as server logs, are kept as long as the law requires — see How long we keep data. Deletion needs a signed-in browser session; it can’t be done with an API key.

Plans and limits

Every plan includes analytics, the live view, breakdowns, the API and API keys, and links never expire on any plan. Plans differ in how many links you can keep active, whether clicks can be forwarded to webhooks and GA4, whether links can be given an expiry date or view limit, and how many custom short codes you get. Current prices are on the pricing page.

FreeProEnterpriseCustom
Active links10030020,000Unlimited
Webhooks and GA4 forwarding—IncludedIncludedIncluded
Expiry by date or number of clicks—IncludedIncludedIncluded
Custom codes includedNone30UnlimitedUnlimited
Extra custom codes$1 per code / month$1 per code / monthNot neededNot needed
Team members per workspace1325Unlimited
Custom domains—110Unlimited

Plans belong to a workspace: each workspace, personal or team, has its own plan, limits and billing. The selected workspace’s plan, its limits and current usage are under Settings → Plan & usage. The Links and Overview pages also show how many of your active links you’re using.

A link counts as active while its status is Active and it hasn’t expired. Paused, archived and expired links don’t count. When you reach your limit, existing links keep working, but creating a link or resuming a paused one is refused (plan_limit_reached). Pause, archive or delete a link you no longer need, or upgrade, to make room.

Expiry dates and view limits

On Pro and higher you can give a link an expiry date, a view limit, or both. On Free these fields are locked and links simply never expire; setting them via the API returns link_expiry_not_in_plan. If a link already has an expiry or view limit (for example from before a downgrade), you can keep it or remove it, but not set a new value.

Webhooks and GA4 forwarding

On Pro and higher you can give a link a webhook URL and GA4 settings. On Free these fields are locked; setting them via the API returns integrations_not_in_plan. If a link already has them (for example from before a downgrade), they’re kept but clicks aren’t forwarded while your plan doesn’t include the feature; the link itself keeps redirecting, and the link page says that forwarding is paused. You can remove the settings at any time, and forwarding resumes when you upgrade.

Custom codes allowance

Each link created with a custom short code uses one code from your plan’s allowance, plus any extra custom codes you’ve bought. The create form shows how many you’ve used, for example “3 of 30 custom codes used”. When none are left the field is locked and you’re offered to upgrade or add more; trying anyway via the API returns custom_code_limit.

Paying for a plan

  • Choose Upgrade on the pricing page, or go to Settings → Billing. Pick the plan and a period of 1, 3, 6 or 12 months (a month is 30 days). The Custom plan isn’t sold online: choose Contact sales and we’ll agree limits, price and invoicing with you.
  • Payments apply to the workspace selected in the switcher. In a team workspace only the owner can pay; other members see the paid period and payment history.
  • Select your billing country. Prices are in US dollars, excluding taxes: customers in India pay 18% GST on top and can enter a GSTIN; customers elsewhere pay taxes as applicable. The form shows the amount to be charged before you pay, and the final breakdown when the payment window opens.
  • Press Pay and complete the payment in the Razorpay window by card, UPI or netbanking. Your plan starts as soon as the payment is confirmed. If you close the window, you haven’t been charged.
  • Plans are prepaid with no automatic renewal. Paying for the same plan again extends it from its current end date; buying a different plan starts it straight away. Settings shows when your plan is paid until, with a link to renew.
  • When a paid period ends your account moves back to the Free plan. Your existing links keep working as they are, including any expiry dates and view limits; the Free limits apply to links you create or resume after that, and webhooks and GA4 forwarding pause until you upgrade again.
  • Settings → Billing lists every payment with its date, total (including tax), status and Razorpay payment ID. For refunds, see the refund policy.

Extra custom codes

On plans that offer them, buy extra custom codes in Settings → Billing → Extra custom codes: choose how many (1 to 100,000) and for how long (1 to 12 months), at the per-code monthly price on the pricing page, plus GST in India. They add to your plan’s allowance as soon as the payment is confirmed. Buying the same number again extends them from their current end date. When the period ends the extra codes are removed from your allowance.

Changing plans

Buy a different plan in Settings → Billing and it applies straight away. Moving to a plan with lower limits never pauses or shortens your existing links; its limits apply to links you create or resume from then on.

Something not covered here? The API reference documents every limit and error code.