Developers · Best Practices
GDPR Technical Implementation
Last updated 2 November 2026
The General Data Protection Regulation (GDPR) sets data protection and privacy guidelines for handling the personal data of individuals within the European Union (EU). As such, it applies not only to all organizations established in the EU that handle personal data but also to any non-EU established organization that processes personal data of individuals who are in the EU. The GDPR came into force on 25 May 2018.
Learn more about GDPR Compliance in our related article.
Implementation Example
In Insites, you gather and update data through Liquid forms. Here's an example of a user sign-up form for clients:
app/forms/client_sign_up.liquid
---
name: onboarding
resource: User
resource_owner: anyone
redirect_to: /
fields:
name:
validation: { presence: true }
email:
password:
profiles:
client:
properties:
---
{% form %}
{% assign f = form.fields %}
<input type="text" name="{{ f.name.name }}" value="{{ f.name.value }}">
<input type="email" name="{{ f.email.name }}" value="{{ f.email.value }}">
<input type="password" name="{{ f.password.name }}" value="{{ f.password.value }}">
<button>Register</button>
{% endform %}You can use the same form with slight modifications to gather and update data. To let a user update their data, pass {% include_form 'onboarding', id: context.current_user.id %}.
Example
This is some example code of a simple opt-in newsletter subscription form implemented in Insites.
Table
app/schema/newsletter.yml
name: newsletter
properties:
- name: email
type: stringPage
app/views/pages/newsletter/join.liquid
---
slug: newsletter
layout: home
---
<h2>Join Newsletter</h2>
{% include_form 'newsletter_form' %}Form
app/forms/newsletter/join.liquid
---
name: newsletter_form
resource: newsletter
flash_notice: Thank you for joining our newsletter
redirect_to: '/newsletter/thank-you?email={{ form.properties.email }}'
fields:
properties:
email:
validation:
presence: true
---
{% form %}
{% assign f = form.fields %}
<input type="text" name="{{ f.properties.email.name }}" value="{{ f.properties.email.value }}">
<button>Save</button>
{% endform %}Thank You Page
app/views/pages/newsletter/thankyou.liquid
---
slug: newsletter/thank-you
layout: home
---
<h2>Newsletter</h2>
You are subscribed to our newsletter. If you wish to unsubscribe place click on <a href="/newsletter/unsubscribe?email={{ context.params.email }}">this link</a>Graph query to get newsletters for an email address
Query returning newsletters for a particular user requires email as an argument.
app/graphql/newsletter/get.graphql
query get_newsletter(
$email: String
)
{
records (
per_page: 1
filter: {
table: { value: "newsletter" }
properties: [
{
name: "email"
value: $email
}
]
}
)
{
results {
email: property(name: "email")
id
}
}
}