Guia completo de funções do Shopify: personalize a lógica de negócios em escala
As funções do Shopify permitem que os desenvolvedores personalizem a lógica comercial central que é executada na infraestrutura do Shopify, e não em servidores externos. Isso significa que cálculos de descontos personalizados, filtragem de métodos de pagamento, modificações nas taxas de envio e validação de carrinho são executados em milissegundos, sem latência de rede. As funções substituíram o Editor de Scripts (Scripts do Shopify) e representam o futuro da customização de backend na plataforma. Este guia cobre todos os tipos de função, fluxo de trabalho de desenvolvimento e padrão de implantação.
Principais conclusões
- As funções do Shopify são executadas em uma sandbox WebAssembly dentro da infraestrutura do Shopify, garantindo tempos de execução inferiores a 5 ms
- Cinco APIs de funções estão disponíveis: descontos, personalização de pagamento, personalização de entrega, validação de carrinho e roteamento de pedidos
- As funções são escritas em Rust, JavaScript ou qualquer linguagem compilada para WebAssembly
- Cada função recebe entrada por meio de resultados de consulta GraphQL e retorna resultados estruturados que o Shopify aplica à operação
- Funções implantadas como parte dos aplicativos Shopify e podem ser configuradas pelos comerciantes por meio do administrador
Quais são as funções do Shopify?
As funções do Shopify são programas leves que personalizam operações comerciais específicas em pontos de extensão predefinidos. Ao contrário dos webhooks (que enviam dados para servidores externos), as Functions são executadas dentro da infraestrutura do Shopify como módulos WebAssembly, garantindo:
- Velocidade: execução abaixo de 5 ms (sem latência de rede)
- Confiabilidade: Sem dependências de servidor externo
- Escala: lida com qualquer volume de tráfego sem planejamento de capacidade
- Segurança: execução em sandbox sem sistema de arquivos ou acesso à rede
APIs de funções
| API | Finalidade | Substitui |
|---|---|---|
| Descontos | Lógica de desconto personalizada (BOGO, escalonada, condicional) | Scripts do Shopify (descontos em itens de linha) |
| Personalização de Pagamento | Mostrar/ocultar/reordenar métodos de pagamento na finalização da compra | Lógica condicional do meio de pagamento |
| Personalização de entrega | Modificar taxas de envio, nomes e disponibilidade | Scripts de taxa de envio |
| Validação de carrinho | Valide o conteúdo do carrinho e bloqueie combinações inválidas | Validação de atributos do carrinho |
| Roteamento de pedidos | Personalize a seleção do local de atendimento | Roteamento de localização padrão |
Ambiente de Desenvolvimento
Pré-requisitos
- Shopify CLI (versão mais recente)
- Node.js 18+
- Uma conta de parceiro do Shopify e uma loja de desenvolvimento
- Conjunto de ferramentas Rust (para funções baseadas em Rust) ou tempo de execução JavaScript
Criando uma função
Crie uma nova função usando a CLI do Shopify:
Execute npx shopify app generate extension e selecione o tipo de função. The CLI generates:
| Arquivo | Finalidade |
|---|---|
src/run.js (ou run.rs) | A lógica da função |
| CÓDIGO0 | Consulta GraphQL definindo os dados de entrada |
| CÓDIGO0 | Configuração e metadados |
| CÓDIGO0 | O esquema da API Shopify (gerado automaticamente) |
Fluxo de trabalho de desenvolvimento
- Definir consulta de entrada: Escreva a consulta GraphQL em
input.graphqlque busca os dados que sua função precisa - Implementar lógica: Escreva a função em
src/run.jsque transforma entrada em saída - Teste localmente: execute testes de unidade com
npx shopify app function test - Implantar: Envie para Shopify com
npx shopify app deploy - Configurar: os comerciantes configuram os parâmetros de função por meio da IU do aplicativo
Funções de desconto
Como funcionam as funções de desconto
Uma função de desconto recebe dados do carrinho (itens de linha, informações do cliente, códigos de desconto) e retorna operações de desconto para aplicar. A função é executada sempre que o carrinho é avaliado – no carregamento da página, adição/remoção de item e entrada de checkout.
Padrões de desconto comuns
Compre X e leve Y: quando o carrinho contém o produto X, aplique uma porcentagem ou desconto fixo ao produto Y.
Descontos escalonados: aplique descontos crescentes com base no total do carrinho (10% acima de 100 USD, 15% acima de 200 USD, 20% acima de 500 USD).
Preços específicos do cliente: verifique as tags ou metacampos do cliente e aplique descontos específicos do segmento (atacado, VIP, funcionário).
Descontos em pacotes: quando combinações específicas de produtos estiverem no carrinho, aplique um desconto em pacotes (compre os três e economize 25%).
Descontos por volume: aplique descontos por unidade com base na quantidade (1 a 9 unidades pelo preço total, 10 a 24 com 10% de desconto, 25+ com 20% de desconto).
Exemplo de consulta de entrada
A consulta de entrada da função de desconto normalmente solicita:
- Itens de linha do carrinho com IDs de produtos, IDs de variantes, quantidades e preços
- Informações do cliente (ID, tags, metacampos) se estiver usando segmentação de clientes
- Código de desconto se estiver validando um desconto baseado em código
- Metacampos de produto para regras de desconto específicas do produto
Output Structure
A função retorna uma série de operações de desconto:
| Operação | Descrição |
|---|---|
| CÓDIGO0 | Aplicar desconto a produtos/variantes específicos |
| CÓDIGO0 | Aplicar desconto no total do pedido |
| CÓDIGO0 | Remover despesas de envio |
Cada operação inclui o valor do desconto (percentagem ou valor fixo), uma mensagem apresentada ao cliente e as condições em que se aplica.
Funções de personalização de pagamento
Casos de uso
- Ocultar métodos de pagamento: Ocultar "Pagamento na entrega" para pedidos acima de um limite
- Métodos de novo pedido: mostre primeiro o método de pagamento mais popular com base na localização do cliente
- Renomear métodos: exibir nomes de métodos de pagamento localizados
- Adicionar mensagens: mostre informações adicionais ao lado de formas de pagamento específicas
Padrão de Implementação
A função recebe os dados do carrinho e as formas de pagamento disponíveis. Retorna operações que modificam a lista de meios de pagamento:
| Operação | Efeito |
|---|---|
| CÓDIGO0 | Remover uma forma de pagamento da finalização da compra |
| CÓDIGO0 | Alterar o nome de exibição de uma forma de pagamento |
| CÓDIGO0 | Reordenar métodos de pagamento |
Funções de personalização de entrega
Casos de uso
- Renomear opções de envio: exibir "Entrega expressa (2 a 3 dias)" em vez dos nomes das taxas das transportadoras
- Ocultar opções: Remover envio terrestre de produtos perecíveis
- Opções de novo pedido: mostre primeiro a opção mais rápida para pedidos urgentes
- Adicionar mensagem: exibe datas de entrega estimadas ao lado de cada opção
Implementação
A função recebe taxas de frete das transportadoras configuradas e devolve modificações. A entrada inclui itens de linha do carrinho (para verificar os tipos de produtos), endereço de entrega (para regras baseadas em localização) e opções de entrega disponíveis.
Funções de validação de carrinho
Casos de uso
- Limites de quantidade: Máximo de 5 unidades de produtos de edição limitada
- Restrições de combinação: Produto A e Produto B não podem estar no mesmo carrinho (incompatível)
- Requisitos mínimos: contas de atacado devem pedir no mínimo 100 USD
- Restrições geográficas: bloquear o envio de determinados produtos para regiões restritas
Saída de validação
Quando a validação falha, a função retorna um erro com:
- Alvo: qual linha do carrinho ou o próprio carrinho
- Mensagem: mensagem de erro do cliente
- Gravidade: Erro (bloqueia checkout) ou aviso (permite mas notifica)
Funções de teste
Teste de unidade
Teste funções localmente sem implantar:
- Crie acessórios de teste com dados de entrada de amostra
- Execute a função nos fixtures
- Afirme que o resultado corresponde aos resultados esperados
A CLI do Shopify gera padrão de teste:
| Cenário de teste | O que verificar |
|---|---|
| Carrinho vazio | Função não retorna operações |
| Carrinho de qualificação | Desconto/modificação correta aplicada |
| Casos extremos | Valores-limite, quantidades máximas |
| Tratamento de erros | Entrada inválida tratada normalmente |
| Desempenho | A execução é concluída em menos de 5 ms |
Modo de visualização
Teste funções em uma loja de desenvolvimento antes de publicar:
- Implante a função em sua loja de desenvolvimento
- Configure-o através do administrador do aplicativo
- Adicione produtos ao carrinho e verifique o comportamento
- Verifique os logs de execução da função na saída CLI do Shopify
Considerações de desempenho
Limites de Execução
| Limite | Valor |
|---|---|
| Prazo de execução | Máximo de 5ms |
| Memória | 12 MB |
| Tamanho de entrada | 64 KB |
| Tamanho de saída | 64 KB |
| Instruções | 1 milhão de instruções Wasm |
Dicas de otimização
- Minimize a consulta de entrada apenas para os campos que sua lógica precisa
- Evite loops aninhados complexos --- use mapas hash para pesquisas
- Pré-calcular valores na configuração do aplicativo e não na função
- Use Rust for performance-critical functions (2-3x faster than JavaScript)
- Execução de função de perfil usando as ferramentas de desempenho CLI do Shopify
Configuração do comerciante
UI de configuração do aplicativo
As funções são configuradas por meio da IU do seu app, não diretamente no admin da Shopify. Crie uma página de configuração que:
- Exibe a finalidade da função e as configurações atuais
- Permite que os comerciantes definam parâmetros (limites, seleções de produtos, porcentagens)
- Armazena a configuração como metacampos que a função lê em tempo de execução
- Valida as entradas antes de salvar
Armazenamento de configuração
Armazene a configuração da função usando metacampos do aplicativo:
- Metacampos no desconto: valores limite, valores percentuais, IDs de produtos
- Armazenamento de dados de aplicativos: configuração complexa, como regras em camadas e segmentos de clientes
- Configuração da função: passada como parte da entrada da função por meio da consulta de entrada
Serviços de desenvolvimento de funções ECOSIRE
As funções personalizadas do Shopify exigem experiência no domínio comercial e habilidades de desenvolvimento WebAssembly. Os serviços de desenvolvimento de aplicativos Shopify da ECOSIRE incluem design de funções, implementação, testes e implantação. Nossa equipe cria mecanismos de descontos, personalizações de pagamento e lógica de validação adaptadas às suas regras de negócios. Para necessidades contínuas, nossos serviços de suporte mantêm e desenvolvem suas funções personalizadas à medida que a plataforma da Shopify avança.
Leitura Relacionada
- Extensibilidade de checkout do Shopify
- Guia de desenvolvimento de aplicativos Shopify
- Guia de integração da API do Shopify
- Automação de fluxo do Shopify
- Guia empresarial do Shopify Plus
Sim. Os scripts do Shopify estão obsoletos e as funções são a substituição. As principais diferenças: as funções são executadas como WebAssembly (não Ruby), implantadas por meio de aplicativos (não o Editor de Script) e oferecem suporte a mais pontos de extensão. Os scripts existentes continuam funcionando, mas o Shopify recomenda migrar para o Functions.
Não diretamente. Funções requerem conhecimento de programação (JavaScript ou Rust). No entanto, os desenvolvedores podem criar aplicativos com UIs de configuração que permitem aos comerciantes personalizar o comportamento da função sem codificação. Muitos aplicativos na App Store da Shopify usam funções internamente, ao mesmo tempo que apresentam uma interface amigável para o comerciante.
Shopify não impõe um limite rígido ao número de funções instaladas. No entanto, cada avaliação de checkout executa todas as funções aplicáveis sequencialmente, portanto, aplicam-se considerações de desempenho. O limite de 5 ms por função garante que funções individuais não possam retardar o checkout, mas ter dezenas de funções poderia, teoricamente, impactar o tempo total de avaliação do checkout.
Escrito por
ECOSIRE Research and Development Team
Construindo produtos digitais de nível empresarial na ECOSIRE. Compartilhando insights sobre integrações Odoo, automação de e-commerce e soluções de negócios com IA.
Artigos Relacionados
Personalização de IA para comércio eletrônico: experiências individualizadas que convertem
Implemente a personalização de IA para comércio eletrônico com recomendações de produtos, conteúdo dinâmico, pesquisa personalizada e otimização da jornada do cliente para conversões 15-30% maiores.
Headless Shopify com Hydrogen: crie vitrines personalizadas de alto desempenho
Guia completo para construir vitrines Shopify sem interface com estrutura Hydrogen, cobrindo Remix, API Storefront, hospedagem Oxygen e otimização de desempenho.
Construindo lojas Shopify que priorizam dispositivos móveis: guia completo de otimização
Crie lojas Shopify que priorizam dispositivos móveis e convertem. Abrange seleção de temas, UX móvel, otimização de checkout, desempenho de aplicativos e estratégias móveis específicas do Shopify.