Home
Softono
netlify-form-sanity

netlify-form-sanity

Open source HTML
48
Stars
14
Forks
9
Issues
1
Watchers
1 year
Last Commit

About netlify-form-sanity

How to use Netlify Forms and Functions to submit data to Sanity.io

Platforms

Web Self-hosted

Languages

HTML

How to use Netlify Forms and Functions to submit data to Sanity.io

This is a simple example of how you can use Forms and Functions in Netlify to submit data to your Sanity.io project.

Demonstration of Netlify form via Functions to Sanity Studio

How to use

  1. Fork or clone this repo
  2. Run yarn or npm install
  3. Change the projectId and the dataset configuration in /lambda/submission-created.js to your Sanity.io project`s
  4. Commit and push the changes to your GitHub repo
  5. Connect Netlify to that repo, and add a environment variable in Netlify called SANITY_TOKEN
  6. Go to your Settings -> API in your project at manage.sanity.io, and add a token with write rights.
  7. Paste this token as the value for SANITY_TOKEN (be careful with where you store this token!)
  8. Submissions will be stored with _id on a path: "submission.<uuid>", and will not be available through the public API without a token with read rights.
  9. If you want to view the submissions in the Studio, you can add the following schema to your project:
/*
 * Doesn't cover all the data fields.
 * Remove or set readOnly to `false` if you want to be able
 * to edit the responses in the Studio
 */

export default {
  name: 'submission.form',
  type: 'document',
  title: 'Form submission',
  readOnly: true,
  fields: [
    {
      name: 'title',
      type: 'string',
      title: 'Title'
    },
    {
      name: 'number',
      type: 'number',
      title: 'Number'
    },
    {
      name: 'created_at',
      type: 'datetime',
      title: 'Created at'
    },
    {
      name: 'data',
      type: 'object',
      title: 'Data',
      fields: [
        {
          name: 'email',
          type: 'email',
          title: 'Email'
        },
        {
          name: 'name',
          type: 'string',
          title: 'Name'
        },
        {
          name: 'message',
          type: 'text',
          title: 'Message'
        },
        {
          name: 'role',
          type: 'array',
          title: 'Role',
          of: [{ type: 'string' }]
        }
      ]
    }
  ]
}