Skip to content

Kicklace, an AI-powered CRM for micro SaaS

SaaS customer data

Records, identities and interactions: what Kicklace stores about your customers, how one person is recognised across five systems, how consent is kept, and what an export and a deletion actually do.

01

Three shapes

Kicklace is an AI-powered CRM and customer platform for micro SaaS companies, which in practice means it is a place to keep customer data that arrives from four or five systems and has to come out as one thing. This page is what that data actually is.

There are three shapes and no more: records, which are the people and companies and anything else you track; identities, which are the ways one record can be recognised; and interactions, which are everything that happened, in order. Stages, lists, consent and charts are all read off those three.

02

The record

What one row holds, and what you can add to it.

Objects
Person, Organization and Deal are built in, and you can make objects of your own — Releases, Projects, whatever your product has. Deals are off in a new workspace and switched on under Settings → General; nothing else depends on them.
Fields
Each object has its own fields: text, number, date, a select with your own options, and so on. Add, rename and reorder them under Settings. A field's key never changes when you rename it, because that is what events, views, automations and charts refer to it by.
Associations
Records are linked to each other with a label: a person works at an organization, an organization is the customer on a deal. A link is a relationship, not a copied field, so nothing has to be kept in step.
Stage
A record sits in one stage of one pipeline. For people that pipeline is the lifecycle and the stage is derived from events; for everything else it is an ordinary board you move by hand or by automation.
First touch and last touch
Where somebody came from the first time, and the most recent time: source, medium, campaign, the page they landed on, an ad click id, and when. The first touch is never overwritten and survives a merge.

03

Identities: nine ways to be the same person

A record can be found by any of them, and finding it by one attaches the others.

emailThe address, lowercased. The durable key: it is what makes somebody the same person on a phone and a laptop.
anonThe random id the script tag keeps in the browser's own storage. One per browser, and it is how an anonymous visitor is a record at all.
accountYour product's own user or account id, posted with an identify call or with any event. It is what links a purchase your billing knows about to a person your product knows about.
installAn installation id, for a product people download and run.
domainAn organization's domain, so a company is one record rather than one per person who works there.
stripe_customerThe Stripe customer id, written down the first time an event arrives carrying both it and an address. It is what lets a subscription event with no email address in it at all still land on the right person.
clerk_userThe user id at Clerk. Asked for before the address, so somebody who changes their email over there stays one person here rather than becoming two.
kinde_userThe same, at Kinde.
github_userThe GitHub login. A sponsor often has no public address at all, so the handle carries them until an address turns up beside it.

An email address arriving with a browser id that Kicklace has not seen attaches that browser to that person. One arriving with a browser id that belongs to a different, still-anonymous person folds that person in: identities, timeline, subscriptions and links are repointed, the fields are unioned, the earliest first touch wins and the loser is marked as merged. Two people who both have email addresses are never merged automatically — that one is offered to you on the record, with a preview of everything that would move.

04

Events

Everything that happened to a person, under a name Kicklace knows or one of your own.

Events that move somebody

Where the workspace has that stage.

  • downloadDownloader
  • activatedActivated
  • signupAccount
  • trial_startedTrial
  • purchasePurchaser
  • credit_purchasePurchaser
  • churnedChurned
  • subscription_cancelledChurned

Events that are recorded and move nobody

They are on the timeline and a chart can count them; they are just not a stage.

  • pageview
  • configure
  • cta_click
  • waitlist_cta
  • measure_cta
  • subscription_started
  • subscription_renewed
  • refund
  • checkout_abandoned
  • sign_in
  • account_deleted
  • github_star

Any other name is your own: 2 to 40 characters of lowercase letters, digits and underscores, like credit_added. It lands on the person's timeline under that name and an automation can answer it; it moves nobody between stages, because Kicklace cannot know what a name it has never seen means. Names of your own go through your secret key, never from a browser.

A chart counting events reads properties.value as money, and the source, medium and campaign the person first arrived with. Anything else you post is kept on the row and shown on the timeline.

An event whose stage a workspace has not got is recorded and moves nobody, with no error anywhere: the event is what happened, and the stage is only what Kicklace makes of it. Every event, what it means and who posts it.

05

Consent, stored word for word

The sentence itself, with the date and the address it came from.

A subscription is one person on one list, and on it is the sentence they agreed to, word for word, with the moment they agreed and the address it came from. Not a flag saying consent was given: the wording itself, so that if anybody ever asks, the answer is the sentence and not a shrug.

It is stored the same way however the person arrived — a form on your site that the tag heard, a form Kicklace hosts, a subscribe call from your server, or a member adding somebody by hand, which asks for the sentence and records who added them. Every email is tied to a list, carries a one-click unsubscribe, and links to a page where the person can see every list they are on and leave any of them.

Unsubscribing does not delete the consent record. It stays as the proof that they once agreed, and the removal is on their timeline.

06

Export, deletion and how long it is kept

Three answers you want before you put anybody's data anywhere.

An export of one person is everything held about them: their fields, every identity, every subscription with its consent text, the whole timeline, the emails sent to them and how each one went, their links to other records, and the records that were merged into them. It is one JSON file from that person's own page, and any view of any object is a CSV.

A deletion removes the record, the records merged into it, and everything that references it. Owners and admins are told it happened, and the notice never names the person.

Anonymous visitors are cleared on a schedule you set: a person with no email address who has been idle longer than the number of days in Settings is deleted, and setting it to zero keeps them for ever. An individual event can also carry an expiry when it is posted — your own promise about how long that event may be kept, honoured here — and the row goes when it runs out, while the person, their stage and their consent all stay.

Data belongs to one workspace and is never read across workspaces, by a person, a chart or the model. How the stages are worked out, and the doors that fill all of this in.

Questions

How does Kicklace know two visits are the same person?
By identity. The script tag keeps one random id in the browser, an email address is the durable key across devices, and your product's account id, a Stripe customer, a Clerk or Kinde user and a GitHub login are all identities too. An address arriving with a browser id that belongs to a still-anonymous person folds that person in, keeping the earliest first touch; two people who both have addresses are never merged without you saying so.
Where is consent stored?
On the subscription, as the sentence itself with the moment it was agreed and the address it came from — not as a flag saying somebody consented. It is stored the same way whether the person used a form on your site, a form Kicklace hosts, your own server, or was added by a member, which asks for the wording and records who added them. Unsubscribing keeps the record as proof.
Can I get my data out?
Yes. Everything about one person is a JSON file from their own page — fields, identities, subscriptions with consent, the whole timeline, the emails sent to them, their links and the records merged into them — and any view of any object exports as CSV. There is nothing you can see in Kicklace that you cannot take with you.
How long are anonymous visitors kept?
For as long as you say. Settings has a number of days, and a person with no email address who has been idle longer than that is deleted; setting it to zero keeps them indefinitely. Separately, any single event can be posted with an expiry, which is your own promise about how long that event may be kept — the row goes when it runs out and the person, their stage and their consent stay.
Can I add my own fields and objects?
Yes, under Settings. Fields of every ordinary type on the built-in objects, and whole objects of your own with their own fields, pipeline, views, board, import, export and charts. Keys never change when you rename something, so an automation or a chart that named a field goes on meaning the same field.
Does the AI read all of this?
No. A model step reads one record at a time — its fields, its stage, its lists, where it came from and the last thirty rows of its timeline as a kind, a title, a day and who — plus the message that started the run, where there was one. It never reads another record, the words of any other timeline row, or anything from another workspace, and you can switch AI off entirely.

Read next

Join the waitlist

We are onboarding one company at a time. Leave your email and we will let you know when your workspace is ready.

Optional.

Optional. Tell us about your product and where your leads come from.

Which plan would you want?

Prices are not final and nothing is charged. Pick a plan now and you will get that price when billing opens.

By joining, you agree to receive waitlist updates from Kicklace: Put me on the Kicklace waitlist and tell me when a workspace can open for my company. We store this wording with the date and your email address. Every email has a one-click unsubscribe link. Privacy policy.

We reply to every signup.