Bom dia, @alessandrodev! A estratégia adotada depende muito das suas regras de negócio, por exemplo, você pode ter um webhook exclusivo para tratar recebimentos e outro exclusivo para tratar envios, se você utilizar o Split ainda pode ter um exclusivo para ele.
Caso prefira organizar todos em um único ponto, você teria o payload padrão de recebimento (endToEndId, txid, chave, valor, horario e infoPagador).
Se for um recebimento com split você terá tudo isso acrescido do gnExtras contendo pagador e split.
Para devolução é preciso que o recebimento já tenha existido, você pode adotar uma conferência interna do txid ou verificar a existência da propriedade devolucoes.
Já o envio de Pix terá as propriedades tipo e status e não terá o txid (virá em gnExtras o identificador do envio -> idEnvio).
Mais informações sobre o recebimento de callbacks na documentação: https://dev.efipay.com.br/docs/api-pix/webhooks/#recebendo-callbacks