async def METHOD_NAME(self, payload: dict, in_edge=None) -> Result:
    dot = self._get_dot_accessor(payload)
    traverser = DictTraverser(dot)
    email = dot[self.config.email]
    mapping = traverser.reshape(self.config.additional_mapping)
    mapping = self.parse_mapping(mapping)
    try:
        result = await self.client.add_contact(
            email=email,
            overwrite_with_blank=self.config.overwrite_with_blank,
            **mapping
        )
        return Result(port="response", value=result)
    except MauticClientAuthException:
        try:
            await self.client.update_token()
            result = await self.client.add_contact(
                email=email,
                overwrite_with_blank=self.config.overwrite_with_blank,
                **mapping
            )
            if self.debug:
                self.resource.credentials.test = self.client.credentials
            else:
                self.resource.credentials.production = self.client.credentials
            await resource_db.save_record(self.resource)
            return Result(port="response", value=result)
        except MauticClientAuthException as e:
            return Result(port="error", value={"error": str(e), "msg": ""})
        except StorageException as e:
            return Result(port="error", value={"error": "Plugin was unable to update credentials.", "msg": str(e)})
        except MauticClientException as e:
            return Result(port="error", value={"error": "Mautic API error", "msg": str(e)})
    except MauticClientException as e:
        return Result(port="error", value={"error": "Mautic API error", "msg": str(e)})