Guia completo de funções do Shopify: personalize a lógica de negócios em escala

Domine as funções do Shopify para descontos personalizados, filtragem de métodos de pagamento, manipulação de taxas de envio e validação de carrinho com este guia de desenvolvimento completo.

E
ECOSIRE Research and Development Team
|16 de março de 20269 min de leitura2.0k Palavras|

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

APIFinalidadeSubstitui
DescontosLógica de desconto personalizada (BOGO, escalonada, condicional)Scripts do Shopify (descontos em itens de linha)
Personalização de PagamentoMostrar/ocultar/reordenar métodos de pagamento na finalização da compraLógica condicional do meio de pagamento
Personalização de entregaModificar taxas de envio, nomes e disponibilidadeScripts de taxa de envio
Validação de carrinhoValide o conteúdo do carrinho e bloqueie combinações inválidasValidação de atributos do carrinho
Roteamento de pedidosPersonalize a seleção do local de atendimentoRoteamento 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:

ArquivoFinalidade
src/run.js (ou run.rs)A lógica da função
CÓDIGO0Consulta GraphQL definindo os dados de entrada
CÓDIGO0Configuração e metadados
CÓDIGO0O esquema da API Shopify (gerado automaticamente)

Fluxo de trabalho de desenvolvimento

  1. Definir consulta de entrada: Escreva a consulta GraphQL em input.graphql que busca os dados que sua função precisa
  2. Implementar lógica: Escreva a função em src/run.js que transforma entrada em saída
  3. Teste localmente: execute testes de unidade com npx shopify app function test
  4. Implantar: Envie para Shopify com npx shopify app deploy
  5. 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çãoDescrição
CÓDIGO0Aplicar desconto a produtos/variantes específicos
CÓDIGO0Aplicar desconto no total do pedido
CÓDIGO0Remover 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çãoEfeito
CÓDIGO0Remover uma forma de pagamento da finalização da compra
CÓDIGO0Alterar o nome de exibição de uma forma de pagamento
CÓDIGO0Reordenar 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:

  1. Crie acessórios de teste com dados de entrada de amostra
  2. Execute a função nos fixtures
  3. Afirme que o resultado corresponde aos resultados esperados

A CLI do Shopify gera padrão de teste:

Cenário de testeO que verificar
Carrinho vazioFunção não retorna operações
Carrinho de qualificaçãoDesconto/modificação correta aplicada
Casos extremosValores-limite, quantidades máximas
Tratamento de errosEntrada inválida tratada normalmente
DesempenhoA execução é concluída em menos de 5 ms

Modo de visualização

Teste funções em uma loja de desenvolvimento antes de publicar:

  1. Implante a função em sua loja de desenvolvimento
  2. Configure-o através do administrador do aplicativo
  3. Adicione produtos ao carrinho e verifique o comportamento
  4. Verifique os logs de execução da função na saída CLI do Shopify

Considerações de desempenho

Limites de Execução

LimiteValor
Prazo de execuçãoMáximo de 5ms
Memória12 MB
Tamanho de entrada64 KB
Tamanho de saída64 KB
Instruções1 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:

  1. Exibe a finalidade da função e as configurações atuais
  2. Permite que os comerciantes definam parâmetros (limites, seleções de produtos, porcentagens)
  3. Armazena a configuração como metacampos que a função lê em tempo de execução
  4. 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

As funções do Shopify substituem os scripts do Shopify?

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.

Os não desenvolvedores podem criar funções do Shopify?

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.

Existe um limite para quantas funções podem ser executadas em uma única loja?

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.

E

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.

Converse no WhatsApp