Skip to content

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

Notifications You must be signed in to change notification settings

sanity-io/netlify-form-sanity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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' }]
        }
      ]
    }
  ]
}