I don't know enough about twitch to answer your twitch-related question, but I just have a comment about your script. When you paste code you should use the "#" icon to give you the code tags. If you place your code between them it puts your code in a different font, and also preserves the extra spacing, making it easier to read. The preview-post button lets you see what it looks like before you post it. Like:

Code:
raw USERNOTICE:*:{
  if (($msgtags(msg-id).key == subgift) && ($1 == #channel)) {
    var %nick $iif($msgtags(display-name).key, $v1, $msgtags(login).key)
    if ($0 == 1) {
      msg $1 Thank you $msgtags(display-name).key for subscribing with a gifted sub from $2 <3 
    }
  }
}


You have a command to create the %nick local variable but never use it again, and local variables disappear as soon as the event or alias completes.

Then you have ($0 == 1) which can only be true if there was exactly 1 parameter 'token' in the usernotice ($0 is the count of how many token there are), yet your message uses $2 which represents the 2nd parameter, which can never exist when $0 is 1.